home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1993…stman Always Clicks Twice / ADC Developer CD (1993-01) (''The Postman Always Clicks Twice'')_iso / Dev.CD 199301.iso / Periodicals / develop / develop Issue 12 / develop #12 / develop #12
Encoding:
Text File  |  1992-10-21  |  3.1 MB  |  5,074 lines  |  [ONLN/HLX2]

Text Truncated. Only the first 1MB is shown below. Download the file for the complete contents.
  1. develop
  2. The Apple Technical Journal
  3.     TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS
  4. TIME BASES: THE HEARTBEAT OF QUICKTIME
  5. BETTER APPLE EVENT CODING THROUGH OBJECTS
  6. ANOTHER TAKE ON GLOBALS IN STANDALONE CODE
  7. COMPONENTS AND C++ CLASSES COMPARED
  8. ANIMATION AT A GLANCE
  9. TOP 10 PRINTING MISDEMEANORS
  10. KON & BAL’S PUZZLE PAGE
  11. MACINTOSH Q & A
  12. Issue 12   December 1992
  13.     
  14.  
  15. Apple Computer, Inc.
  16. 20525 Mariani Avenue
  17. Cupertino, CA  95014
  18. E D I T O R I A L  S T A F F
  19. Editor-in-Cheek  Caroline Rose
  20. Technical Buckstopper  Dave Johnson
  21. Our Boss  Greg Joswiak
  22. His Boss  David Krathwohl
  23. Review Board  Pete (“Luke”) Alexander, Neil Day, C. K. Haun, Jim Reekes, Bryan K. (“Beaker”) Ressler, Larry Rosenstein, Andy Shebanow, Gregg Williams
  24. Managing Editor  Monica Meffert
  25. Assistant Managing Editor  Ana Wilczynski
  26. Contributing Editors  Lorraine Anderson, Geta Carlson, Toni Haskell, Judy Helfand, Rebecca Pepper, Rilla Reynolds
  27. Indexer  Ira Kleinberg
  28. A R T  &  P R O D U C T I O N
  29. Production Manager  Hartley Lesser
  30. Art Director  Diane Wilcox
  31. Technical Illustration  Nurit Arbel, John Ryan 
  32. Formatting  Forbes Mill Press
  33. Printing  Wolfer Printing Company, Inc.
  34. Film Preparation  Aptos Post, Inc.
  35. Production  PrePress Assembly
  36. Photography  Sharon Beals, Lisa Jongewaard
  37. Electronic version production  
  38. In-Yung Kim, Dan Peterson, 
  39. Meredith Best, Cassi Carpenter    
  40. The stone jigsaw puzzle was pieced together by Hal Rucker of Rucker Huggins using Adobe Illustrator, FontMonger, Ray Dream Designer 2.0, and Adobe Photoshop.
  41. develop, The Apple Technical Journal, is a quarterly publication of the Developer Support Information  group.
  42. The Developer CD Series disc for November/December 1992 or later contains this issue and all back issues of develop along with the code that the articles describe. The develop issues and code are also available on AppleLink and via anonymous ftp on ftp.apple.com.
  43.     
  44.  
  45.     EDITORIAL    Playing the postdating game   2
  46.     LETTERS    CDs lost in space.   4
  47.     ARTICLES    Techniques for Writing and Debugging Components  by Gary Woodcock and Casey King   Components aren’t just for QuickTime programmers anymore.   7
  48.         Time Bases: The Heartbeat of QuickTime  by Guillermo A. Ortiz   Understanding and manipulating time bases directly is sometimes helpful. Here are some tips.   41
  49.         Better Apple Event Coding Through Objects  by Eric M. Berdahl   Adding Object Model support to your existing OOP code may be easier than you think.   58
  50.         Another Take on Globals in Standalone Code  by Keith Rollin   For MPW users, here’s an alternative way to implement globals in standalone code.   89
  51.     COLUMNS    Be Our Guest: Components and C++ Classes Compared  by David 
  52. Van Brink   Components and C++ classes have some surface similarities but underneath are very different beasts.   37
  53.         Graphical Truffles: Animation at a Glance  by Edgar Lee   Three basic animation techniques everyone should know about.   53
  54.         Print Hints: Top 10 Printing Misdemeanors  by Pete (“Luke”) Alexander   You know the felonies, now learn the lesser printing crimes.   84
  55.         KON & BAL’s Puzzle Page: A Micro Bug  by Konstantin Othmer and Bruce Leak   Remember that little built-in debugger that no one ever uses? 
  56. People do.   134
  57.     Q & A    Macintosh Q & A   Apple’s Developer Support Center answers your product development questions.   120
  58.     INDEX    138
  59. EDITORIAL
  60. CAROLINE ROSE
  61. Dear Readers,
  62. The more observant among you may have noticed that we’ve made yet another change to develop with respect to how it’s dated. The last change happened with Issue 10, when we stopped designating issues with the current season and went back to using the current month, because the season isn’t the same around the world. Now we’ve  moved the date ahead by one month — also to accommodate worldwide distribution.
  63. For the terminally curious, here are the details: Apple Direct, our vanguard of information for business and technical decison makers, doesn’t reach other countries until two to eight weeks after it’s distributed in the U.S.; it might, for example, be folded into a local mailing whose schedule doesn’t coincide. So by the time some non-U.S. developers see Apple Direct, they think they’ve been sent a past issue rather than the latest one. To help convey to them that it is indeed the latest issue, it’s now dated with a month that’s closer to when they’ll see it. The Developer CD Series disc, Apple Direct, and develop all need to be in sync — so there you have it. What is now the December issue of develop was the Autumn issue last year and the October issue in 1990 (when our production cycle was a month out of phase from where it is now). Anyway, we hope those of you in the U.S. agree there’s no harm in a little time travel forward.
  64. A little time travel forward would be really handy for me while I’m writing these editorials, because I don’t always know what the state of the develop-related world will be two months in advance (that’s the lag time before you actually read this). In Issue 11’s editorial, for example, I couldn’t alert you to develop’s being in a new format on the Developer CD Series disc, because at that time we weren’t sure it would make it onto that disc. Yes, we’ve responded to your complaints about develop in HyperCard® by switching to that popular viewing tool that you may know as “BlueNote” — now “Apple DocViewer” — the same tool that’s used for viewing New Inside Macintosh. 
  65. The Developer CD corresponding to Issue 11 contained a prerelease version of DocViewer that still needed some work; for example, it wouldn’t work at all on a Macintosh Plus. In lieu of a time machine, I’ve consulted the Magic 8-Ball DTSuses to answer developer questions, and it tells me that the CD corresponding to this issue of develop — called the “November/December” CD, to ease the transition — will include a version 1.0 release of DocViewer along with Issues 11 and 12 in DocViewer 
  66. format. Version 1.0 should work on Macintosh Plus and newer models, with system software version 6.0 and later. Back issues of develop will eventually also make their way over into this format (the 8-Ball is hazy regarding just when this will happen). We’d really like your feedback on DocViewer and how well it works for reading develop (or anything else). Please check it out, and send your flames or even praise to AppleLink DEV.CD. 
  67. Whoops — did I say “DTS”? Old habits die hard. Another change we’re gradually making in develop is to shift from “Developer Technical Support” (DTS) to “Developer Support Center” (DSC). As you may have read in the April 1992 issue of Apple Direct, the DSC is a gateway to DTS as well as other support-related resources. It provides a focal point for developer queries — a single AppleLink address, DEVSUPPORT, and a single phone number, (408)974-4897. Developers who aren’t Apple Associates or Partners can contact the DSC for limited nontechnical support and referrals. We’ll be adjusting to this change along with others that are creeping in: Tech Note references no longer numbered; Inside Macintosh references that include New Inside Macintosh; DocViewer as the on-line viewing tool; postdating; and other changes that I foresee but don’t dare reveal lest I upset the delicate balance of the universe.
  68. Finally, I feel compelled to explain my bizarre trivia answer in Issue 11, about the upside-down character that wasn’t. I claimed the offending character was “8,” which on the contrary looks perfectly OK — not at all topheavy — in printed develop. It turns out that this “8” is topheavy only in LaserWriter output. That will teach me to use a media-specific question! I think I’ll quit while I’m behind and lay off trivia questions altogether for a while (even though I’ll miss those friendly letters from you).
  69. Caroline Rose
  70. Editor
  71. LETTERS
  72. POSTAL DEVILS EATING CDS?
  73. develop is the most exciting piece of regular mail I get after Japanese animation laserdiscs. I joyfully received Issue 11 but unfortunately the wolverines in the Postal Service dined on some of the plastic and no CD was to be found! Help!
  74. — Jim Perry
  75. Would you consider mailing develop in a nonperforated plastic wrapping? The perforation was two-thirds torn when I received it.
  76. — Eva Schlesinger
  77. I really enjoy develop, but I have to say that I’ve enjoyed it less recently. 
  78. Some time ago the CDs came in a small envelope well protected inside the magazine, and everything was fine. Now, develop is shipped with the CD in its own holder, which would seem to be a fabulous idea except that you were blind-sided by the U.S. Post Office.
  79. Every month since the CD got its own holder, the Post Office has mangled my plastic bag, CD holder, and magazine. Today my develop issue 11 arrived sans CD. I called the subscription office (1-800-545-9364) and they promise to send me another within four weeks.(!?) Growl.
  80. — Bob Cent
  81. Most of the mail I get is, unfortunately, on this subject. Our Production Manager, Hartley Lesser, really has been working on it. Even with Issue 11, we took a small step toward solving the problem: since many people thought someone was breaking open the package and stealing the CD, we inserted a      thick sheet of paper over the CD so that it wouldn’t be visible. But complaints of torn packaging still came in, so clearly the packaging just wasn’t sturdy enough. The packaging around Issue 12 and its CD should be about twice as thick as before and have no perforation. If that doesn’t work we’ll try something else.
  82. Issue 7 was the last one to list the 800 number you used to contact the subscription office (though it stubbornly has still shown up on our renewal notice). The correct number is 1-800-877-5548. The person you spoke to normally doesn’t handle calls regarding develop and didn’t know that replacement CDs should be mailed within a day or two of notification of the problem. Sorry for the mixup. We hope you’ll never need that service again!
  83. — Caroline Rose
  84. SCREENWRITING CAVEAT
  85. Your Issue 11 column on drawing to the screen was really useful to me. I had an animation program that wrote directly to the screen and it worked fine. But when I upgraded to a new accelerator card my program kept crashing. I spent months trying to figure out the problem. But your article fixed it straight away. All I needed was the SwapMMUMode calls. I don’t know why the previous card didn’t require them, but my program works fine now.
  86. — Tony Cooper
  87. Thanks for your interest in the column. We’re glad it was helpful to you.
  88. One thing we want to be sure to mention is that writing directly to the screen will break for sure on future Macintosh systems based on RISC technology. And we again want to    
  89. stress that the only applications that should even consider writing directly to the screen are games and other animation programs.
  90. — Brigham Stevens and Bill Guschwan
  91. USER-FRIENDLY RENEWING
  92. Recently I received a couple of renewal notices for develop in the mail. In trying to decipher these notices, I realized that user friendliness is something we should all be aiming for not just in the software we write, but in everything we do. It’s interesting how working with the Macintosh makes one aware of human interface issues in everyday life.
  93. Anyway, I think there are a few ways in which the develop renewal notices could be made more user friendly:
  94. 1. Leave a bigger space for writing the credit card number.
  95. 2. Clearly indicate on the renewal notice the date my subscription expires.
  96. 3. Is there any reason why the renewal notices are printed in red ink?
  97. —Tim Hammett
  98. We’re in the process of making the changes you suggested to the develop renewal notice. 
  99. 1. We’ll leave a bigger space for writing the credit card number. 
  100. 2. The notice will indicate when the subscription expires. You can also find this out at any time from your mailing label: the number that appears on a line by itself at the top of the label indicates the last issue you’ll receive unless you renew.
  101. 3. The reason for the red ink is so that this little piece of paper doesn’t get lost on your desk. But you’ve inspired us to change it to a more readable, deeper red.    We’re also correcting the 800 phone number on the notice, to 1-800-877-5548.
  102. Thanks for your letter. Without it, I would have assumed that the renewal notice (which isn’t really in my domain) was in great shape. I appreciate the enlightenment.
  103. —Caroline Rose
  104. REUSED CDS: IS IT ART?
  105. In Issue 10 of develop, Bruce Radford stated that he wasn’t sure what to do with his old CDs. He felt that he should recycle them, but he wasn’t sure how. Well, I have a suggestion. 
  106. Many people forget that reusing something is often even better than straight recycling. My school would have many uses for old issues of the develop CD. I know a few friends who would love copies, no matter how old; I could use them in a programming class; and other students could cut them up to make jewelry for school fundraisers. I also have many uses for old 256K SIMMs, which seem to be becoming about as useful as pennies now. 
  107. So go ahead and send the stuff that you think no one needs to me, or to a school near you.
  108. — Peter Bierman (age 16)
  109. BS Software
  110. 5757 Olentangy Blvd.
  111. Worthington, OH 43085
  112. Thanks for the idea. Day care centers and children’s museums have also been mentioned as possible destinations for old CDs. We suggest that before giving away CDs for for art projects, developers put a deep scratch through the data side of the CD if it contains any confidential or licensed data.    
  113.  
  114. For some wild and crazy ideas on this from Apple’s Developer Support Center, see the Q & A on page 126.
  115. — Caroline Rose
  116. DEVELOP INTERNET ADDRESS
  117. I’m on the Internet and develop contains only AppleLink addresses. I’m guessing that crose@applelink.apple.com is your Internet address. develop really should have an Internet address for academic developers to send e-mail to.
  118. — Eric Kofoid
  119. Adding “applelink.apple.com” to any AppleLink address converts it to an Internet address. The Internet addresses for me and develop’s Technical Editor Dave Johnson are listed on the last page of every issue.
  120. — Caroline Rose    BACK ISSUES CONUNDRUM
  121. I noticed that your back issues are listed at $13 in develop and at $10 in the APDA catalog.
  122. Why the discrepancy? Who should I order the back issues from?
  123. — Michael Tackie
  124. P.S. Great magazine. Very technical. I don’t understand everything, but that’s good; it forces me to become a better programmer.
  125. You pay a $3 shipping charge when you order from APDA, so it adds up to $13 in the end.
  126. — Caroline Rose
  127. P.S. Thanks!
  128.     
  129. CORRECTION TO APPLE EVENTS ARTICLE IN ISSUE 10     
  130. The “Apple Event Objects and You” article in develop Issue 10 contains two errors in the printed sample code. The first problem is that five lines were omitted from the end of GetWindowIndex. The code at the top of page 25 should be changed from 
  131.         return noErr;
  132. }
  133. to
  134. if ((rawIndex > numWindows)||(rawIndex <= 0)){
  135.     *index = 0;
  136.     return errAENoSuchObject;
  137. } else
  138.     *index = rawIndex;
  139.     return noErr
  140. }
  141.     The second bug is in the routine WriteRectToken (page 30). The following call 
  142. BlockMove(*thisRectDesc.dataHandle,
  143.     &tokenPtr->theRect,sizeof(Rect));
  144. should be changed to
  145. BlockMove(*thisRectDesc.dataHandle,
  146.     (Ptr)tokenPtr->theRect,sizeof(Rect));
  147. Since theRect is actually a pointer to a rectangle (see the declaration at the top of page 29), the first version would have destroyed the pointer and four bytes of the following long integer.
  148. Thanks to Doug McKenna, the author of Resorcerer, for pointing out these problems.
  149.     
  150.  
  151. TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS
  152. GARY WOODCOCK AND CASEY KING
  153. Programmers first saw the Component Manager as part of the QuickTime 1.0 system extension. Now that the Component Manager is part of System 7.1, components aren’t just for QuickTime programmers any more. This article shows you how to take advantage of the power and flexibility of components as a way to give extended functionality to any Macintosh application.
  154. Software developers are continually searching for ways to avoid reinventing the proverbial wheel every time they need new capabilities for their programs. A new approach is available with components. Components are modules of functionality that applications can share at run time. They enable applications to extend the services of the core Macintosh system software with minimal risk of introducing incompatibilities (unlike, for example, trap patching). 
  155. As Figure 1 suggests, components also encourage a building-block approach to solving complex problems. Higher-level components can call lower-level components to build sophisticated functionality, while at the same time making the application program interface (API) much simpler. What’s more, because components are separate from an application that uses them, you can modify and extend components without affecting the application.
  156. Components are maintained by the Component Manager, which is responsible for keeping track of the components available at any given time and of the particular services they provide. The Component Manager provides a standard interface through which applications establish connections to the components they need.
  157. Almost anything you can dream up can be a component — video digitizer drivers, dialogs, graphics primitives, statistical functions, and more. QuickTime 1.0 itself contains a number of useful components, including the movie controller, the sequence grabber, and a variety of image compressors and decompressors (codecs), all of which are available to any client application.
  158.  
  159.  
  160. Figure 1
  161. Using Components as Software Building Blocks
  162. To demonstrate the all-around usefulness of components, we’ll examine the development and implementation of a component that does some rather trivial mathematical calculations. This example will help us focus on concepts rather than getting lost in the details of solving a complex problem. We’ll build a fairly generic component template that you can use in your own designs. We’ll also discuss some advanced component features, such as extending component functionality, capturing components, and delegating component functions. Finally, we’ll show you some techniques and tools for debugging your components. The accompanying Developer CD Series disc contains our example component’s source code, a simple application to test our component, and the debugging tools.
  163.  
  164. COMPONENT TRIVIA #1
  165. The original name for the Component Manager (as conceived of by Bruce “Of course the feature set is frozen!” Leak) was the Thing Manager. Components were referred to as “things” (as were the QuickTime project schedules, the significance of which engineers couldn’t easily grasp). The use of this terminology led to one of two conditions in most QuickTime engineers: in some, an irrepressible compulsion to make “thing” puns, and in others, perhaps as a backlash against the former, an almost pathological aversion to the use of the word “thing” in normal conversation.
  166. Note that this article doesn’t spend a great deal of time explaining how applications can find and use components. We assume that you’ve invested some effort in reading the QuickTime Developer’s Guide (part of the QuickTime Developer’s Kit). If you haven’t, we strongly urge you to do so, since the Developer’s Guide contains the definitive description of the Component Manager.
  167. SHOULD YOU WRITE A COMPONENT?
  168. OK, components sound interesting, but should you write one? Why write a component when you can just code the functionality you need directly into your application or write a device driver? Here are a few reasons to choose components over the alternatives:
  169. •    Components are easier for applications to use. Client applications don’t have to know what they’re looking for before opening a service. This is different from device drivers, where open calls must provide either a driver name or a refNum. An application can simply tell the Component Manager, “I’m looking for somebody to do this for me. Is anybody available?” In addition, clients don’t need to set up parameter blocks or make control/status calls to use components. Armed with the API of the component type, the caller simply makes normal function calls to the component, and the Component Manager does the work.
  170. •    Components are more flexible. You can modify the behavior of a component by overriding its capabilities without adversely affecting the application. The Component Manager enables the component to communicate its capabilities to clients dynamically.
  171. •    Components allow you to design more flexible applications. They can be used to divide the functional aspects of an application into parts. For example, a word processing application might use a spelling checker component, a thesaurus component, and a grammar checker component. If the thesaurus component is updated, the application code doesn’t have to change at all. A user can simply replace the old thesaurus component with the new one.
  172. •    Components are easier to implement than device drivers. There are no declaration structures, driver headers, assembly code glue, installation INITs, or any of the peculiarities that come with device drivers.
  173. •    Components are easier to debug than device drivers. No longer will you be walking the unit table to find your driver so that you can set a breakpoint at your control call dispatcher. You can easily and effectively debug your code using a source-level debugger such as Symantec’s THINK C Debugger.
  174. Now that you know the advantages of components, you have to decide whether the functionality you need is a good candidate for a component. To do this, ask yourself the following:
  175. •    Do I anticipate reusing this functionality in other applications? Components are ideal for providing services that many applications can use.
  176. •    Do I anticipate having to modify certain aspects of this functionality in the future? Functionality encapsulated in a component can be extended or modified without disturbing the original interface specification.
  177. •    Is there a benefit to users in establishing a common API for this functionality, so that other developers can use or extend it? You might want to be able to allow third parties to extend your application without having to expose detailed information about your application’s internal data structures. For example, many of the “plug-in” modules for today’s popular graphics applications could easily be implemented as components.
  178. A “yes” to more than one of these questions means that components are probably a good approach for your next product. But you still have one last question to answer: has someone else already written a component that solves your problem? To find out, you need to contact Apple’s Component Registry group (AppleLink REGISTRY) and ask them. These folks maintain a database of all registered component types, subtypes, and manufacturers, as well as the corresponding APIs (if they’re publicly available). A check with the Registry is mandatory for anyone who’s contemplating writing a component. 
  179. If after all this you find that you’re still about to embark into uncharted territory, read on, and we’ll endeavor to illuminate your passage.
  180.  
  181. COMPONENT TRIVIA #2    
  182. The original component type for the sequence grabber component was, logically enough, 'grab'. The engineer primarily responsible for the sequence grabber, Peter Hoddie, requires massive infusions of Diet Coke to function properly. During a particularly intense bout of engineering mania, the Diet Coke supply was exhausted; unbeknownst to anyone, Peter became temporarily 
  183.     tdyslexic and changed the sequence grabber component type to 'barg'. The change was never noticed, and it caused no real harm, other than the wasted time developers spent trying to figure out what 'barg' might be an acronym for (Boffo Audio Reverb Gadget? Bodacious Analog Reference Gizmo?). Peter’s brain has since returned to its (relatively) normal state.
  184.     
  185. COMPONENT BASICS 101
  186. Client applications use the Component Manager to access components. As shown in Figure 2, the Component Manager acts as a mediator between an application’s requests for component services and a component’s execution of those requests. The Component Manager uses a component instance to determine which component is needed to satisfy an application’s request for services. An instance can be thought of as an application’s connection to a component. We’ll have more to say about component instances later on. 
  187. Figure 2
  188. How Applications Work With Components
  189. Conceptually, components consist of two parts: a collection of functions as defined in the component’s API, and a dispatcher that takes care of routing application requests to the proper function. These requests are represented by request codes that the Component Manager maps to the component functions. Let’s take a look at both the component functions and the component dispatcher in detail.
  190. COMPONENT FUNCTIONS
  191. There are two groups of functions that are implemented in a component. One group does the custom work that’s unique to the component. The nature of these functions depends on the capabilities that the component is intended to provide to clients. For example, the movie controller component, which plays QuickTime movies, has a number of functions in this category that control the position, playback rate, size, and other movie characteristics. Each function defined in your component API must have a corresponding request code, and you must assign these request codes positive values (0 or greater).
  192. The second group of functions comprises the standard calls defined by the Component Manager for use by a component. Currently, four of these standard calls must be implemented by every component: open, close, can do, and version. Two more request codes, register and target, are defined, but supporting these is optional. The standard calls are represented by negative request codes and are defined only by Apple. 
  193. Here’s a quick look at each of the six standard calls.
  194. The open function. The open function gives a component the opportunity to initialize itself before handling client requests, and in particular to allocate any private storage it may need. Private storage is useful if your component has hardware-dependent settings, local environment settings, cached data structures, IDs of component instances that may provide services to your component, or anything else you might want to keep around. 
  195. The close function. The close function provides for an orderly shutdown of a component. For simple components, closing mainly involves disposing of the private storage created in the open function. For more complex components, it may be necessary to close supporting components and to reset hardware. 
  196. The can do function. The can do function tells an application which functions in the component’s API are supported. Clients that need to query a component about its capabilities can use the ComponentFunctionImplemented routine to send the component a can do request. 
  197. The version function. The version function provides two important pieces of information: the component specification level and the implementation level. A change in the specification level normally indicates a change in the basic API for a particular component class, while implementation-level changes indicate, for example, a bug fix or the use of a new algorithm. 
  198. The register function. The register function allows a component to determine whether it can function properly with the current system configuration. Video digitizer components, for example, typically use register requests to check for the presence of their corresponding digitizing hardware before accepting registration with the Component Manager. A component receives a register request code only if it explicitly asks for it. We’ll see how this is done when we walk through our sample component. 
  199. The target function. The target function informs your component it has been captured by another component. Capturing a component is similar to subclassing an object, in that the captured component is superseded by the capturing component. The captured component is replaced by the capturing component in the component registration list and is no longer available to clients. We’ll discuss the notion of capturing components in more detail later. 
  200. THE COMPONENT DISPATCHER 
  201. All components must have a main entry point consisting of a dispatcher that routes the requests the client application sends via the Component Manager. When an application calls a component function, the Component Manager passes two parameters to the component dispatcher — a ComponentParameters structure and a handle to any private storage that was set up in the component’s open function. The ComponentParameters structure looks like this:
  202. typedef struct {
  203.     unsigned char     flags;    
  204.     unsigned char     paramSize;            
  205.     short                 what;                        
  206.     long                 params[kSmallestArray];        
  207. } ComponentParameters;
  208. The first two fields are used internally by the Component Manager and aren’t of much interest here. The what field contains the request code corresponding to the component function call made by the application. The params field contains the parameters that accompany the call.
  209. Figure 3 shows a detailed view of how a component function call from an application is processed. The component dispatcher examines the what field of the ComponentParameters record to determine the request code, and then transfers control to the appropriate component function.
  210. REGISTERING A COMPONENT
  211. Before a component can be used by an application, it must be registered with the Component Manager. This way the Component Manager knows which components are available when it’s asked to open a particular type of component. 
  212. Figure 3
  213. Processing an Application’s Request for Component Services
  214. Autoregistration versus application registration. There are two ways that you can register a component. By far the easiest way is to build a standalone component file of type 'thng'. At system startup, the Component Manager will automatically register any component that it finds in files of type 'thng' in the System Folder and in the Extensions folder (in System 7) and its subfolders. The 'thng' component file must contain both your component and the corresponding component ('thng') resource. The definition of this resource can be found in the Components.h header file and is shown below.
  215. typedef struct {
  216.     unsigned long     type;             /* 4-byte code */
  217.     short                 id;
  218. } ResourceSpec;
  219. typedef struct {
  220.     ComponentDescription td;                     /* Registration parameters */
  221.     ResourceSpec            component;             /* Resource where code is found */
  222.     ResourceSpec            componentName;     /* Name string resource */
  223.     ResourceSpec            componentInfo;     /* Info string resource */
  224.     ResourceSpec            componentIcon;     /* Icon resource */
  225. } ComponentResource;
  226. Figure 4 shows the contents of the component resource that we’ll use for the example component.
  227. Figure 4
  228. Math Component Resource
  229. An application can also register a component itself using the Component Manager call RegisterComponent or RegisterComponentResource. As we’ll see, this registration method facilitates symbolic debugging of components. 
  230. Global versus local registration. Components can be registered locally or globally. A component that’s registered locally is visible only within the A5 world in which it’s registered, whereas a globally registered component is available to all potential client applications. Typically, you register a component locally only if you want to restrict its use to a particular application.
  231. A SIMPLE MATH COMPONENT 
  232. To help you understand how to write a component, we’re going to go through the whole process with an example — in this case, a simple math component. We start by contacting the Apple Component Registry group, and to our astonishment (and their bemusement), we find that there are no registered components that do simple math! We assume for the moment that the arithmetic operators in our high-level programming language are unavailable and that our application is in desperate need of integer division and multiplication support.
  233. We create a component called Math that performs integer division and multiplication.
  234. THE FUNCTION PROTOTYPE DEFINITION
  235. We need to define function prototypes for each of the calls in our component API — namely, DoDivide and DoMultiply. The function prototype for the DoDivide component call can be found in MathComponent.h and is shown below. The declaration for the DoMultiply function is similar. 
  236. pascal ComponentResult DoDivide (MathComponent mathInstance,
  237.     short numerator, short denominator, short *result) = 
  238.     ComponentCallNow (kDoDivideSelect, 0x08);
  239. This resembles a normal C language function prototype with a relatively straightforward parameter list. The mathInstance parameter is the component instance through which the application accesses the component; we’ll see how an application gets one of these instances in a moment. The numerator and denominator parameters are self-explanatory and are passed in by the calling application as well. The contents of the last parameter, result, are filled in by the DoDivide function upon completion.
  240. Those of you who have a passing familiarity with C are probably more than a little curious about the last portion of the declaration. ComponentCallNow is a macro defined by the Component Manager (see “Inside the ComponentCallNow Macro” for the nuts and bolts of how the macro works). Its main purpose is to identify a 
  241.  
  242. INSIDE THE COMPONENTCALLNOW MACRO    
  243. Some of you may be wondering exactly what the ComponentCallNow macro does. Let’s expand this macro for our DoDivide component call and examine it in detail.
  244.     = {0x2F3C, 0x08, kDoDivideSelect, 0x7000,
  245.         0xA82A};
  246. The first element, 0x2F3C, is the Motorola 68000 opcode for a move instruction. Execution of this instruction loads the contents of the next two elements onto the stack. The next element, 0x08, is the amount of stack space that we calculated for the function parameters of the DoDivide call. The third element, kDoDivideSelect, is the request 
  247.     code corresponding to the DoDivide call. The fourth element, 0x7000, is the Motorola 68000 opcode for an instruction that sets the contents of register D0 to 0. The Component Manager interprets this condition as a request to call your component rather than handling the request itself. The last element, 0xA82A, is the opcode for an instruction that executes a trap to the Component Manager.
  248. While you can use this inline code in your component function declarations directly, we recommend that you use the ComponentCallNow macro to make your code more portable.    
  249. routine as a component function, as opposed to a normal C function. When an application calls the DoDivide function, the macro is executed. This causes a trap to the Component Manager to be executed, allowing the Component Manager to send a message to the component responsible for handling the function. 
  250. The first parameter to the ComponentCallNow macro is an integer value representing the request code for the integer division function. As noted earlier, your component’s dispatcher uses this request code to determine what function has been requested. Recall that you may only define request codes that are positive.
  251. The second parameter is an integer value that indicates the amount of stack space 
  252. (in bytes) that’s required by the function for its parameters, not including the component instance parameter. Be careful to note that Boolean and single-byte parameters may need to be passed as 16-bit integer values (see the section “Eleven Common Mistakes” for details). For the Math component, the space required for the DoDivide function is two 16-bit integers followed by a 32-bit pointer, for a total of eight bytes.
  253. THE MATH COMPONENT DISPATCHER
  254. The dispatcher of the Math component is shown in its entirety below. Notice that the dispatcher executes its component functions indirectly by calling one of two Component Manager utility functions — CallComponentFunction or CallComponentFunctionWithStorage. You use CallComponentFunction when your component function needs only the fields in the ComponentParameters structure, and CallComponentFunctionWithStorage when it also needs access to the private storage that was allocated in your component’s open function. 
  255. pascal ComponentResult main (ComponentParameters *params,
  256.                                             Handle storage)
  257. {
  258.     // This routine is the main dispatcher for the Math component.
  259.     ComponentResult result = noErr;
  260.     
  261.     // Did we get a Component Manager request code (< 0)?
  262.     if (params->what < 0) {
  263.         switch (params->what)
  264.         {
  265.             case kComponentOpenSelect:            // Open request
  266.                 result = CallComponentFunctionWithStorage (storage, params,
  267.                                 (ComponentFunction) _MathOpen);
  268.                 break;
  269.             case kComponentCloseSelect:            // Close request
  270.                 result = CallComponentFunctionWithStorage (storage, params,
  271.                                 (ComponentFunction) _MathClose);
  272.                 break;
  273.             case kComponentCanDoSelect:            // Can do request
  274.                 result = CallComponentFunction (params,
  275.                                 ComponentFunction) _MathCanDo);
  276.                 break;
  277.             case kComponentVersionSelect:        // Version request
  278.                 result = CallComponentFunction (params,
  279.                                 (ComponentFunction) _MathVersion);
  280.                 break;
  281.             case kComponentTargetSelect:            // Target request
  282.                 result = CallComponentFunctionWithStorage (storage, params,
  283.                                 (ComponentFunction) _MathTarget);
  284.                 break;
  285.             case kComponentRegisterSelect:        // Register request not                                                                 // supported
  286.             default:                                    // Unknown request
  287.                 result = paramErr;
  288.                 break;
  289.         }
  290.     }
  291.     else {                                                // One of our request codes?
  292.         switch (params->what)
  293.         {
  294.             case kDoDivideSelect:                    // Divide request
  295.                 result = CallComponentFunction (params, 
  296.                                 (ComponentFunction) _MathDoDivide);
  297.                 break;
  298.             case kDoMultiplySelect:                // Multiply request
  299.                 result = CallComponentFunction (params,
  300.                                 (ComponentFunction) _MathDoMultiply);
  301.                 break;
  302.             default:                                    // Unknown request
  303.                 result = paramErr;
  304.                 break;
  305.         }
  306.     }
  307.     return (result);
  308. }
  309. A drawback of the dispatcher is the overhead incurred in having the Component Manager functions mediate all your requests. To reduce your calling overhead and thus improve performance, you can use a fast dispatch technique. While this technique is used in most of the QuickTime 1.0 components, this is the first time that it’s been publicly described. See “Fast Component Dispatch” for details. 
  310. THE MATH COMPONENT DODIVIDE CALL 
  311. For the Math component, the DoDivide function is declared as follows:
  312. pascal ComponentResult _MathDoDivide (short numerator, short denominator,
  313.                                                          short* quotient)
  314. {
  315.     ComponentResult result = noErr;
  316.     
  317.     if (denominator != 0) {
  318.         *quotient = numerator/denominator;
  319.     } 
  320.     else {
  321.         *quotient = 0;
  322.         result = -1L;    // Divide by zero not allowed
  323.     }
  324.     return (result);
  325. }
  326. The key thing to note here is that component functions must always return a result code. The return value is 32 bits and is defined in the API for the component. In our case, a value of 0 (noErr) indicates successful completion of the call and a negative value indicates that an abnormal completion occurred. Note that for some components a negative result code could indicate that the returned parameter values should be interpreted in a particular manner. For example, a video digitizer may return a negative result code of notExactSize from the VDSetDestination call. This doesn’t indicate an error. It just means that the requested size wasn’t available on the digitizer and that the next closest size was given instead. Also, since this result code is 
  327. FAST COMPONENT DISPATCH 
  328. BY MARK KRUEGER     
  329. If you’re concerned about the time it takes to dispatch calls made to your component, try the fast dispatch method. This method eliminates the need for your component to make the extra call to the Component Manager functions CallComponentFunction and CallComponentFunctionWithStorage, and allows control to pass directly back to the caller. It does this by calling your component entry point with the call’s parameters, the instance storage, and the caller’s return address already on the stack. It passes the component request code in register D0, and points register A0 at the stack location where the instance storage is kept. 
  330. To handle a fast dispatch, you must write your component entry point in assembly language. Use the request code in D0 as an index into a table of function addresses, paying 
  331.     special attention to the negative request codes used for the standard Component Manager calls like OpenComponent and CloseComponent. If the functions are defined correctly, the dispatcher can jump directly to the function address. Note that the function parameter the caller uses to specify the component instance will instead be a handle to your component instance storage. When the function completes, control will return to the calling application. 
  332. You need to tell the Component Manager that your component has a fast dispatch handler instead of a normal dispatcher. To do this, set bit 30 ($40000000) of the componentFlags field of your component resource, and the Component Manager will always call your component using the fast dispatch method.    
  333. 32 bits, you could actually return pointers or handles as results, rather than error codes.
  334. USING THE MATH COMPONENT
  335. In this section, we look at how an application uses the Math component. First, the application has to ask the Component Manager to locate the Math component. If the Math component is found, the application can open it and make calls to it.
  336. FINDING AND OPENING THE MATH COMPONENT
  337. We tell the Component Manager which component we’re looking for by sending it a ComponentDescription record containing the type, subtype, and manufacturer codes for the desired component. We then call the Component Manager routine FindNextComponent to locate a registered component that fits the description. The code fragment below shows how this looks. 
  338. ComponentDescription        mathDesc;
  339. Component                         mathComponentID;
  340. // Math component description
  341. mathDesc.componentType = mathComponentType;
  342. mathDesc.componentSubType = 0L;                    // Wild card
  343.  
  344. mathDesc.componentManufacturer = 'appl';
  345. mathDesc.componentFlags = 0L;                        // Wild card
  346. mathDesc.componentFlagsMask = 0L;                // Wild card
  347.  
  348. // Find a Math component
  349. mathComponentID = FindNextComponent (nil, &mathDesc);
  350. The zeros in the componentSubType, componentFlags, and componentFlagsMask fields indicate that they function as wild cards. If the Component Manager was unable to locate a component matching the description, it returns zero. 
  351. Assuming the Component Manager returned a nonzero component ID, we now open the component using the OpenComponent call, as follows: .
  352. mathInstance = OpenComponent (mathComponentID);
  353. OpenComponent returns a unique connection reference — a component instance — to the Math component. If the component instance is nonzero, we’re ready to use the component. Figure 5 illustrates the process of finding a component. 
  354. Figure 5
  355. How Applications Find Components
  356.  
  357. MAKING CALLS TO THE MATH COMPONENT
  358. The Math component performs only two functions, dividing and multiplying two integers. To ask it to divide two numbers for us, we just call the component function DoDivide with the component instance value we got by opening the Math component. 
  359. result = DoDivide (mathInstance, numerator, denominator, "ient);
  360. When we’re done with the component, we close the connection with the CloseComponent call, like this: 
  361. result = CloseComponent (mathInstance);
  362. That’s all there is to it. You can see that making component function calls is much like making any other kind of call.
  363. EXTENDING EXISTING COMPONENTS
  364. After defining the basic functionality for your component, you may find that you want to extend it beyond what you originally specified in your component API. There are three ways to extend the functionality of existing components:
  365. •    Use the subtype and/or manufacturer fields of the component description to indicate to a client application that a specific component implementation provides previously undefined functionality.
  366. •    Revise the component API to add calls that weren’t specified in the original interface.
  367. •     Modify the behavior of a particular component implementation by capturing it and overriding a specific function.
  368. The following sections examine these methods in detail.
  369. ADDING NEW FUNCTIONALITY TO A SPECIFIC COMPONENT IMPLEMENTATION 
  370. Let’s add some more functionality to the Math component. The MoMath component extends the Math component by adding an addition function. A new function prototype is added for the new function in MoMathComponent.h, along with a new request code, kDoAddSelect.
  371. pascal ComponentResult DoAdd (MathComponent mathInstance, short firstNum,
  372.     short secondNum, short* result) = ComponentCallNow (kDoAddSelect, 
  373.     0x08);
  374.  
  375. Request codes for implementation-specific functions must have an ID of 256 or greater. This is required to differentiate these functions from those that are generally defined in the API for the component type. Implementation-specific functions usually provide capabilities beyond those specified in the component API, and thus offer developers a way to differentiate their component implementations from those of competing developers. The following code fragment from the MoMath component dispatcher shows support for the DoAdd function: 
  376. case kDoAddSelect:            // Add function
  377. {
  378.     result = CallComponentFunction (params, 
  379.                     (ComponentFunction) _MoMathDoAdd);
  380.     break;
  381. }
  382. How does the calling application know that a superset of the Math component is around? To start with, the caller needs to know that such a beast even exists. Remember, this is an extension of a component implementation by a particular vendor, not of the component type in general. In this case, the extended component is differentiated from its basic implementation by its manufacturer code. Both Math and MoMath have the same component type ('math'), but their manufacturer codes differ ('appl' for Math and 'gwck' for MoMath). Note that the subtype field can be used in a similar manner, but it’s typically used to distinguish algorithmic variations of a general component type. For example, image compressor components ('imco') use the subtype field to differentiate various types of compression algorithms ('rle ' for run length encoding, 'jpeg' for JPEG, and so on). The manufacturer field is used to identify vendor-specific implementations of a particular compression algorithm.
  383. If the application is aware that this extended component exists, it can use the information stored in the component’s 'thng' resource to locate and open it. Once the component has been opened, the application calls the extended function just as it would any other component function. 
  384. ADDING NEW FUNCTIONALITY TO A COMPONENT TYPE
  385. In the preceding example, we used the manufacturer code to hook in new functionality to the Math component; this allowed a specific implementation to extend the interface. In reality, we would be better off extending the component by defining a change to the Math component API, so that all components of this type would have an interface defined for the new addition function. Of course, this is an option only when you’re the owner of the component API. Changing component APIs that are owned by others (for instance, by Apple) is a good way to break applications, and no one appreciates that, least of all your users.
  386. If you’re going to take this route, be sure that the existing API is left unchanged, so that clients using the old component’s API can use your new component without having to be modified. In addition, it’s important to update the interface revision level of components that implement the new API, so that clients can determine whether a particular component implementation supports the new API.
  387. MODIFYING EXISTING FUNCTIONALITY
  388. Modifying existing functionality is a little more complicated than adding functionality to a component type. In the example component, the DoDivide function divides two 16-bit integers, truncating the result. We would actually get a better answer if the result were rounded to the nearest integer. We don’t need to add a new call to do this, since what we really want to do is replace the implementation of the existing call with a more accurate version. On the other hand, the Math component does an acceptable job of multiplying two integers, so we don’t need to override that function. Instead, we’ll use the multiply function that’s already implemented. 
  389. We can do this by writing a component that does the following:
  390. •    captures the original Math component 
  391. •     overrides the original DoDivide function with a more accurate division function
  392. •     delegates the DoMultiply function to the original Math component 
  393. Let’s start by writing a new component — in the example code, it’s called NuMathComponent — that contains a dispatcher, as well as functions to handle the Component Manager request codes and the new DoDivide routine. We use a register routine to check for the availability of a Math component before we allow the NuMath component to be registered. If no Math component is available, obviously we can’t capture it, and we shouldn’t register. We also set cmpWantsRegisterMessage (bit 31) in the componentFlags field of the ComponentDescription record in the NuMath component’s 'thng' resource to let the Component Manager know that we want a chance to check our environment before we’re registered. With this flag set, the sequence of requests that NuMath will get at registration time will be open, register, and close. 
  394. The NuMath component register routine is as follows:
  395. pascal ComponentResult _NuMathRegister (void)
  396. {
  397.     // See if a Math component is registered. If not, don't register
  398.     // this component, since it can't work without the Math component.
  399.     // We return 0 to register, 1 to not register.
  400.  
  401.     ComponentDescription    mathDesc;
  402.     
  403.  
  404.     mathDesc.componentType = mathComponentType;
  405.     mathDesc.componentSubType = 0L;                // Wild card
  406.     mathDesc.componentManufacturer = 'appl';
  407.     mathDesc.componentFlags = 0L;                // Wild card
  408.     mathDesc.componentFlagsMask = 0L;            // Wild card
  409.     
  410.     return ((FindNextComponent (nil, &mathDesc) != 0L) ? 0L : 1L);
  411. }
  412. Our open routine opens an instance of the Math component normally, and then uses the ComponentFunctionImplemented routine to determine whether the component we want to capture supports the target request code. We then capture the Math component with the CaptureComponent call. 
  413. if (ComponentFunctionImplemented ((ComponentInstance) mathComponentID,
  414.         kComponentTargetSelect)) {    
  415.     mathComponentID = CaptureComponent (mathComponentID, (Component) self);
  416. }
  417. The original Math component ID is now effectively removed from the Component Manager’s registration list. This means that the Math component is now hidden from all other clients, except those that already had a connection open to it before it was captured.
  418. We then open an instance of the Math component, and use the ComponentSetTarget utility (defined in MathComponent.h) to inform Math that it’s been captured by NuMath. 
  419. result = ComponentSetTarget (mathInstance, self);
  420. Why does a component need to know that it’s been captured? If a captured component makes use of its own functions, it needs to call through the capturing component instead of through itself, because the capturing component may be overriding one of the calls that the captured component is using. A captured component does this by keeping track of the component instance that the ComponentSetTarget call passed to it and by using that instance to make calls to the capturing component.
  421. When the NuMath Comp;onent receives a divide request code, we dispatch to the new DoDivide function, effectively overriding the DoDivide function that was implemented in the Math component. However, when we receive a multiply request code, we delegate this to the captured Math component, since we aren’t overriding the multiply function. We do this by simply making a DoMultiply call to the Math component, passing in the parameters that the NuMath component was provided with. 
  422.  
  423. result = DoMultiply (mathInstance, firstNum, secondNum,
  424.                                  multiplicationResult);
  425. In the close routine of the NuMath component, we remember to close the instance of the Math component we were using, and also to uncapture it so that we restore the system to its original state. 
  426. result = CloseComponent (mathInstance);
  427. result = UncaptureComponent (mathComponentID);
  428. THAT WASN’T SO BAD, WAS IT?
  429. As you can see, adding new functionality is no big deal. As always, however, you should notify developers who may use your component of any late-breaking interface changes. You want to be sure that everyone’s writing code that conforms to your most recent component specification. 
  430. ELEVEN COMMON MISTAKES
  431. You may encounter some pitfalls during the development of your component. Here we discuss 11 common mistakes that we’ve either made personally or observed other developers make. We hope that you’ll learn from our own fumblings and save yourself time and frustration.
  432. Allocating space at registration time. Generally, it’s best if your component allocates its storage only when it’s about to be asked to do something — that is, when it has received a kOpenComponentSelect request code. This way, memory isn’t tied up unnecessarily. Remember, your component may never be called during a given session, and if it’s not, it shouldn’t hang out sucking up memory some other process might be able to use.
  433. Allocating space in the system heap. The system heap shouldn’t be your first choice as a place to put your component globals. The system heap is generally reserved for system-wide resources (big surprise), and most components fall into the category of application resources that needn’t be resident at all times. Consider carefully whether you need to scarf up system space. In addition, if your component is registered in an application heap, you should never try to allocate space in the system heap. The fact that you’re registered in an application heap probably indicates that there isn’t any more space in the system heap for you to grab.
  434. Not supporting the kComponentVersionSelect request code. This is a pretty nasty omission for several reasons. First, this is the easiest request code to implement; it takes only a single line of code! What are you, lazy? (Don’t answer that.) Second, clients may use the API version level to keep track of extended functionality — it may be that version 2 of a component interface contains additional calls over version 1, and a client certainly has reason to want to know that. Third, clients may use the 
  435. component version to determine, for example, whether the component in question contains a recent bug fix.
  436. Incorrectly calculating the parameter size for your component function prototype. If you do this, you’ll probably notice it right after calling the offending component function, since your stack will be messed up by however many bytes you failed to calculate correctly. A common instance of this error occurs when calculating the space required by a function call that has char or Boolean parameters. Under certain circumstances, Boolean and char types are padded to two bytes when passed as function parameters. 
  437. To illustrate, we’ll look at two example declarations. How many bytes of stack space need to be reserved for the parameters of the following function?
  438. pascal ComponentResult I2CSendMessage (ComponentInstance ti, 
  439.     unsigned char slaveAddr, unsigned char *dataBuf, short byteCount)
  440. The correct answer is eight bytes. The slaveAddr parameter is promoted to two bytes, the dataBuf pointer takes four bytes, and the byteCount takes two bytes. The rest of the declaration then takes the following form: 
  441.     = ComponentCallNow (kI2CSendMessageSelect, 0x08);
  442. Let’s look at the next example. How many bytes of stack space does this function require?
  443. pascal ComponentResult MyFunction (ComponentInstance ti,
  444.      Boolean aBoolean, char aChar, short *aPointer)
  445. The correct answer is six bytes. The aBoolean parameter takes one byte, the aChar parameter takes one byte, and the aPointer parameter takes four bytes. What’s that? Didn’t we just say that Boolean and char parameters got padded to two bytes? We certainly did, but these types get padded only when an odd number of char or Boolean parameters occurs consecutively in the declaration. Because we could add one byte for the Boolean to the one byte for the char following it, we didn’t need to do any padding — the total number of bytes was even (two bytes), and that’s what’s important. In the first example, this didn’t work. We added one byte for the char to the four bytes for the pointer following it, and got five bytes, and so we needed to pad the char parameter by one byte. The rest of the declaration for the second example is 
  446.     = ComponentCallNow (kMyFunctionSelect, 0x06);
  447. Registering your component when its required hardware isn’t available. If your component doesn’t depend on specific hardware functionality, don’t worry about this. If it does (as, for example, video digitizers do), make sure you check for your hardware before you register your component. The Component Manager provides a flag, cmpWantsRegisterMessage, that you can set in the componentFlags field of your component description record to inform the Component Manager that your component wants to be called before it’s registered. This gives your component an opportunity to check for its associated hardware, and to decline registration if the hardware isn’t available.
  448. Creating multiple instances in response to OpenComponent calls when your component doesn’t support multiple instances. Only you can know whether your component can be opened multiple times. For instance, the Math component is capable of being opened as many times as memory allows (although our sample code restricts the number of open instances to three for the sake of illustration). Normally, a component that controls a single hardware resource should be opened only once and should fail on subsequent open requests. This will prevent clients from oversubscribing your component. Not performing requisite housekeeping in response to a CloseComponent call. Bad things will happen, especially if you have hierarchies of components! As part of your close routine, remember to dispose of your private global storage and to close any drivers, components, files, and so on that you no longer need. 
  449. Allowing multiple instances from a single registration of a hardware component instead of allowing a single instance from each of multiple registrations. While this isn’t really a common mistake today, we want to emphasize that there’s a big difference between designing your component to allow multiple instances versus registering the component multiple times and allowing each registered component to open only once. In the case of a generic software library element (like Math), there’s no problem with multiple instances being opened. In the case of a hardware resource that’s being controlled with a component, it’s almost always preferable to register the component once for every resource that’s available (four widget cards would result in four different registrations rather than one registration that can be opened four times). 
  450. Why does it matter? Consider an application whose sole purpose in life is to manage components that control hardware resources. It may be selecting which resource to use, which one to configure, or which one to pipe into another. It’s much more natural to ask the Component Manager to provide a list of all components of a certain type than it is to open each component that fits the criteria n times (until it returns an open error) in order to determine how many are available. 
  451. To kill a dead horse, suppose we have three identical video digitizers, and we want to convey that information to the user via a menu list. If all are registered separately, we can easily determine how many video digitizers are available (without even opening them) by using the FindNextComponent call. If only one were registered, the list presented to the user would only be a partial list. Take the blind leap of faith: register duplicate hardware resources! 
  452. As a final note, if you’re registering a single component multiple times, be sure that the component name is unique for each registration. This allows users to distinguish between available components (as in the menu example in the previous paragraph), and it also helps you avoid the next gotcha.
  453. Always counting on your component refCon being preserved. We know this may be upsetting to many of you, but there exists a situation in which your component refCon may not be valid. A component refCon (similar to a dialog, window, or control refCon) is a 4-byte value that a component or client can use for any purpose. It’s accessed through a pair of Component Manager calls, GetComponentRefcon and SetComponentRefcon. Component refCons are frequently used to hold useful information such as device IDs or other shared global data, and so can be quite critical to a component. We can hear you now . . . “What? You’re going to nuke my global data reference?!” Well, not exactly — it’s just not as immediately accessible as you would like it to be. Don’t worry, it’s possible to detect when your component is in this situation and retrieve the refCon from it, as long as you follow a few simple steps. 
  454. The situation in question arises when there’s not enough room in the system heap to open a registered component. This happens when you run an application (that uses your component) in a partition space so large that all free memory is reserved by the application. This will prevent the system heap from being able to grow. When the application calls OpenComponent, the component may be unable to open in the system heap because there’s no available space. In this case, the Component Manager will clone the component. When a component is cloned, a new registration of the component is created in the caller’s heap, and the component ID of the cloned component is returned to the caller, not the component ID of the original registration. The clone is very nearly a perfect copy, but like the Dopplegänger Captain Kirk in the Star Trek episode “What Are Little Girls Made Of?” it’s missing something crucial. 
  455. That something is the component refCon. The refCon isn’t preserved in the clone, so if your component needs the refCon to perform properly, it must be recovered from the original component. How you go about doing this is a bit tricky. We assume that you followed our advice and made sure that your component registered itself with a unique name. (This technique is not guaranteed to work properly unless this constraint is satisfied — you’ll see why shortly.)
  456. The first problem is detecting whether your component has been cloned at open time. You can determine this by examining your component’s A5 world using the GetComponentInstanceA5 routine. If the A5 world is nonzero, you’ve been cloned. But wait, you say, what if I registered my component locally? Won’t it have a valid A5 value? Yep, it sure will, but if it was registered locally, we won’t have this nasty situation to begin with, since the component won’t be in the system heap anyway. 
  457. Now you know that you’ve been cloned, and that you can’t depend on your refCon. How do you retrieve it? Well, we know that there are two registrations of the same component in the Component Manager registration list (the original and the clone). So all we have to do is to set up a component description for our component, and then use FindNextComponent to iterate through all registrations of it. We know what our current component description and ID are, so we can just examine the component description and ID for each component returned. Once we find a component whose ID is different from ours but whose description is identical, we’ve found the original component registration. We can then make a call to GetComponentRefcon to obtain the original refCon value, and then set the clone’s refCon appropriately. Whew! 
  458. This technique won’t work with a component that registers multiple times and doesn’t register each time with a unique name. If component X, capable of multiple registrations, always registers with the name “X,” then when we try to find the original component from the clone, there will be multiple components named “X” in the registration list, and we’ll be unable to determine which component is the one we were cloned from.
  459. Omitting the “pascal” keyword from declarations for your component dispatcher or for any functions that are called by CallComponentFunction or CallComponentFunctionWithStorage. This bug will only antagonize those developers who are working in C. As many of you know, the Macintosh system software was originally written in Pascal, and functions that are called by Toolbox routines (in this case, by the Component Manager) must conform to Pascal calling conventions. If you fail to include this keyword where necessary, the parameters for your function will be interpreted in the reverse order from what you intended, and your component may enter the Twilight Zone, perhaps never to return. 
  460. Trying to read resources from your component file when its resource fork isn’t open. When one of your component functions is called, the current resource file (as obtained from CurResFile) is not the component’s resource file unless you explicitly make it so. If you need to access resources that are stored in your component file, you must first call OpenComponentResFile to get an access path, and then call UseResFile with that path. When you’re done with the file, restore 
  461. the current resource file and call CloseComponentResFile to close your component file. 
  462. DEBUGGING TOOLS AND TECHNIQUES
  463. Debugging components can be frustrating if all you have to work with is MacsBug. Fortunately, there are a few tricks and tools that give you a little more power to terminate those pesky bugs. In this section, we’ll show you how to debug your component code with a symbolic debugger, and then we’ll examine three utilities that will help you test your component.
  464. SYMBOLIC DEBUGGING
  465. Let’s suppose that we’ve got the Math component up and running, but something funny is happening in our DoDivide routine. It would be nice to be able to step through the component code symbolically and see what’s happening. Fortunately, there’s a simple trick that involves registering our component in such a way that it can be symbolically debugged.
  466. For the purposes of the example, we’ll discuss how to do this with Symantec’s THINK C development system. The first step is to add the component source code to the application source code project. Then we modify the application code so that instead of using the FindNextComponent call to locate the Math component, we register it ourselves using the RegisterComponent call.
  467. #define kRegisterLocally 0 
  468. mathComponentID = RegisterComponent (&mathDesc,
  469.     (ComponentRoutine) MathDispatcher, kRegisterLocally, nil, nil, nil);
  470. Note that when you register a component in an application heap as we’re doing, you must register it locally, or your system may die a horrible death after your application quits and its application heap goes away.
  471. The component description, mathDesc, is set up just as before. The second parameter is the main entry point (the dispatcher) to the Math component. The Component Manager will call this routine every time it receives a request code for an instance of the Math component. 
  472. In the Math component code, we set up a debug compiler flag (DEBUG_IT, found in DebugFlags.h) which, if defined, indicates whether we want to declare our component dispatcher as a main entry point for a standalone code resource or as just another routine linked into our application program.
  473. #ifdef DEBUG_IT
  474.     // Use this declaration when we're running linked.
  475.     pascal ComponentResult MathDispatcher (ComponentParameters *params,
  476.                                                             Handle storage)
  477. #else
  478.     // Use this declaration when we're building a standalone component.
  479.     pascal ComponentResult main (ComponentParameters *params,
  480.                                                 Handle storage)
  481. #endif DEBUG_IT
  482. The two declarations differ only in that one is declared as a main and one isn’t. (Remember, with both the source for the component and the application in the same project, we can’t have two mains.) Now, each time the Component Manager sends a request code to the Math component, it’s calling a component routine linked into the application (MathDispatcher) that we can trace with the debugger. When we’ve finished debugging the component, we can undefine the debug flag and rebuild the component as a standalone code resource. The test application will now use FindNextComponent to access the standalone component. 
  483. THE THING MACSBUG DCMD 
  484. The thing dcmd is included on the QuickTime 1.0 Developer’s CD. To use this dcmd, simply use ResEdit to copy the 'thng' dcmd resource into a file named Debugger Prefs, and put this file into your System Folder. Once in MacsBug, the dcmd is invoked by entering “thing”. A sample thing display is shown in Figure 6.
  485.  Displaying Registered Components
  486.   Cnt tRef#  ThingName      Type SubT Manu Flags    EntryPnt FileName Prnt LocalA5  RefCon
  487.    #0 010005 Movie Grabber  barg •••• appl 40000000 00000000 QuickTi…      00000000 00000000
  488.    #0 010007 Preview Loader blob •••• appl 00000000 00000000 QuickTi…      00000000 00000000
  489.    #0 01000c Apple Microse… clok micr appl 40000003 00000000 QuickTi…      00000000 00000000
  490.    #0 01000d Apple Tick Cl… clok tick appl 40000001 00000000 QuickTi…      00000000 00000000
  491.    #0 01000e Apple Alias D… dhlr alis appl 40000000 00000000 QuickTi…      00000000 00000000
  492.    #0 010018 Apple Photo -… imco jpeg appl 40600028 00000000 QuickTi…      00000000 00000000
  493.    #0 010014 Apple None     imco raw  appl 4060003f 00000000 QuickTi…      00000000 00000000
  494.    #0 01001c Apple Animati… imco rle  appl 4060043f 00000000 QuickTi…      00000000 00000000
  495.    #0 010016 Apple Video    imco rpza appl 40200438 00000000 QuickTi…      00000000 00000000
  496.    #0 01001a Apple Graphics imco smc  appl 40600408 00000000 QuickTi…      00000000 00000000
  497.    #0 010012                imdc SIVQ appl 00000030 00000000 QuickTi…      00000000 00000000
  498.    #0 010017 Apple Photo -… imdc jpeg appl 40400028 00000000 QuickTi…      00000000 00000000
  499.    #0 010013 Apple None     imdc raw  appl 40400bff 00000000 QuickTi…      00000000 00000000
  500.    #0 01001b Apple Animati… imdc rle  appl 40400c7f 00000000 QuickTi…      00000000 00000000
  501.    #0 010015 Apple Video    imdc rpza appl 40000878 00000000 QuickTi…      00000000 00000000
  502.    #0 010019 Apple Graphics imdc smc  appl 40400438 00000000 QuickTi…      00000000 00000000
  503.    #0 ..000b                jimB jph  leak 00000000 00000000 QuickTi…      00000000 00000000
  504.    #1 010002 NuMath Compon… math      appl 80000000 001a9b80 NuMath …      00000000 00000000
  505.       820000                               0000                            00000000 01263af8
  506.    #1 ..0000 Math Component math      appl 00000000 001a9f80 Math Co…      00000000 00000000
  507.       840001                               0000                            00000000 01263b08
  508.    #0 010001 MoMath Compon… math      gwck 00000000 00000000 MoMath …      00000000 00000000
  509.    #0 010011 Apple Standar… mhlr mhlr appl 40000000 00000000 QuickTi…      00000000 00000000
  510.    #0 01000f Apple Sound M… mhlr soun appl 40000000 00000000 QuickTi…      00000000 00000000
  511.    #0 010010 Apple Video M… mhlr vide appl 40000000 00000000 QuickTi…      00000000 00000000
  512.    #0 010006 Movie Control… play •••• appl 40000000 00000000 QuickTi…      00000000 00000000
  513.    #0 010009 Movie Preview… pmak MooV appl 00000000 00000000 QuickTi…      00000000 00000000
  514.    #0 010008 Pict Preview … pmak PICT appl 00000000 00000000 QuickTi…      00000000 00000000
  515.    #0 01000a Picture Previ… pnot PICT appl 00000000 00000000 QuickTi…      00000000 00000000
  516.    #0 010003 Movie Grabber… sgch soun appl 40000000 00000000 QuickTi…      00000000 00000000
  517.    #0 010004 Movie Grabber… sgch vide appl 40000000 00000000 QuickTi…      00000000 00000000
  518.   #32 Thing Table entries, #29 in use.      #32 Instance Table entries, #2 in use.
  519.    #5  File Table entries, #4  in use.
  520.    Thing Modification Seed #33.            Codec Manager 000dad3c
  521. Figure 6
  522. Sample thing MacsBug Display
  523. The Cnt field indicates the number of instances of a particular component. 
  524. The tRef# field shows the component ID that the Component Manager has assigned to a particular component; this is the value that’s returned to your application by the FindNextComponent call. If there are instances of a component open, the component instances are listed below the component ID in the tRef# field. Note that the tRef# for the Math component is ..0000. The two dots at the beginning indicate that this component has been captured. (We know from the earlier discussion of the NuMath component that it has captured the Math component.)
  525. The ThingName field displays the name of a particular component. This is either the string that’s pointed to by the component’s 'thng' resource or the name that it was registered with by a call to RegisterComponent. 
  526. The Type, SubT, Manu, and Flags fields likewise correspond either to the information that’s stored in the component’s 'thng' resource or to the codes and flags that were supplied to a call to RegisterComponent.
  527. The EntryPnt field is the main entry point of the component code. 
  528. The FileName field indicates what file the component’s 'thng' resource resides in. This field is empty for components registered without a component resource.
  529. The Prnt field displays the parent of a cloned component. This information isn’t available through the Component Manager API. 
  530. The LocalA5 field shows the A5 world that the component is associated with; unless the component is cloned or registered locally, this value is 0. 
  531. The RefCon field is the value of the component’s refCon.
  532. At the bottom of the display there’s a decimal number indicating the number of component (thing) entries allocated in the Component Manager registration list, along with the number of entries actually in use. Similar information is given for the number of file table entries. Finally, the Component Manager modification seed is listed. 
  533. THINGS! CONTROL PANEL 
  534. The Things! control panel, included on the QuickTime 1.0 Developer’s CD, is similar to the thing dcmd but provides several additional capabilities. These include displays of version levels, info and name strings, and resource information, as well as controls to reorder the component search chain and to unregister components.
  535. Figure 7 shows a sample display of the Things! control panel.
  536. Figure 7
  537. Things! Control Panel Main Display
  538. The list on the left in the top panel shows the types of components currently registered with the Component Manager; the list on the right shows the components of the selected type that are currently registered. The latest version of Things! doesn’t display components that aren’t registered globally or that aren’t registered in the same application heap as the control panel is operating in. Things! also doesn’t show components that aren’t resource-based.
  539. The middle panel shows the name of the currently selected component and a description of its type, subtype, and manufacturer fields. The number of instances of the type of component selected (in the example, the 'imco', or image compressor, component type) is displayed at the bottom of this panel. Clicking this field will toggle it to display the number of instances of the selected component (in this case, the Apple Video image compressor component).
  540. The bottom panel shows an information string that usually describes what the component does. At the upper left in this panel are two arrow buttons that can be used for paging the bottom panel (the top and middle panels don’t change).
  541. Figure 8 shows a variation of the bottom panel’s second page. The component version information is displayed at the top. The “Set default” button allows you to assign a particular component as the first component in the Component Manager’s search chain for that component type. 
  542.  
  543.  
  544. Figure 8
  545. Things! Page 2 Display
  546. If the Option key is held down while paging to the second page, a Destroy button is displayed (as shown in Figure 9). Clicking this button will unconditionally unregister the currently selected component. 
  547. Figure 9
  548. Things! Extended Page 2 Display
  549. The third page shows the flags and mask fields of the component. 
  550. The fourth page displays a variety of information about the 'thng' resource associated with a particular component, including the resource name and ID as well as its attributes. 
  551. Page 5 presents a summary of the system software configuration. 
  552. REINSTALLER 
  553. Reinstaller is a utility that lets you install resource-based components without restarting your Macintosh. Launching the application presents a Standard File dialog asking you to choose the file containing the component you want to register. Clicking the Open button will dismiss the dialog and register the selected component with the Component Manager.
  554. The same component file can be installed multiple times. Duplicate components aren’t removed; the most recently installed version of a component becomes the default component for that type. Note that any components installed with Reinstaller are installed only until shutdown or reboot.
  555. This utility is quite handy in conjunction with the Things! control panel’s Destroy button. Between the two of them, you can easily register and unregister your components without having to restart your Macintosh. 
  556. GO DO YOUR OWN “THING”
  557. Now you know how easy it is to write your own components. You’ve learned how to declare your own component API and how to implement a component dispatcher for it. You’ve seen what common pitfalls to avoid and how to symbolically debug your component to help you get around new pitfalls we haven’t thought of. 
  558. We’re confident that once you start programming components, you’ll become addicted! So what are you hanging around here for? Get busy writing, and start amazing your users (and us, too) with some way cool components. We’re waiting . . . 
  559. REQUIRED READING
  560. •    QuickTime Developer’s Guide (part of the QuickTime Developer’s Kit v. 1.0, ADPA #R0147LL/A). Currently the essential reference for programming with the Component Manager. This documentation will be replaced in the near future by three new Inside Macintosh volumes: QuickTime, QuickTime Components, and More Macintosh Toolbox. (The Component Manager will be documented in the latter volume.)
  561. •    “QuickTime 1.0: ‘You Oughta Be in Pictures,’” Guillermo A. Ortiz, develop  Issue 7. An overview of QuickTime, including the Component Manager. 
  562. BE OUR GUEST 
  563.     COMPONENTS AND C++ CLASSES COMPARED 
  564.     
  565. DAVID VAN BRINK 
  566. If you’re familiar with C++ classes but new to thinking about components, you may find it instructive to know how the two compare. Although each has its own niche in Macintosh software development, components and C++ classes have many features in common. 
  567. In general, both components and C++ classes encourage a building-block approach to solving complex problems. But whereas a component is separate from any application that uses it, a class exists only within the application that uses it. Components are intended to add systemwide functionality, while classes are intended to promote a modular approach to developing a program.
  568. We can also compare components and C++ classes in terms of how they’re declared and called, their use of data hiding and inheritance, and their implementation. But first, let’s briefly review what a class is and what a component is.
  569. SOME BASIC DEFINITIONS
  570. A class, in the programming language C++, is a description of a data structure and the operations (methods) that can be performed on it. An instance of a class is known as an object. Classes are provided in C++ to promote an “object-oriented programming style.” By grouping a data type and its methods together, classes enable programmers to take a modular approach to developing a program. 
  571.     A component, as described in the preceding article (“Techniques for Writing and Debugging Components”), is a single routine that accepts as arguments a selector and a parameter block. The selector specifies which of several (or many) operations to perform, and the parameter block contains the arguments necessary for that operation. Components are “registered” with the Component Manager and can be made available to either the program that registered the component or to any program that’s executed, making it possible to add systemwide functionality. For instance, if Joe’s Graphics Corporation develops a new image compression technique, it can be sold to users as a component. Users install the component simply by dragging an icon into a folder, and that form of image compression is then automatically available to all programs that make use of graphics. 
  572. DECLARING CLASSES AND COMPONENTS 
  573. A C++ class is declared in much the same way as a struct, with the addition of routines that operate only on the structure described. Once the class is declared, instances can be declared in exactly the same way as other variables. That is, to create an instance of a class, you either declare a variable of that class or dynamically allocate (and later deallocate) a variable of that class. 
  574. A component must be registered with the Component Manager. At that time, its type, subtype, manufacturer, and name are specified. The type, subtype, and manufacturer are long integers; the name is a string.
  575. Component instances can only be created dynamically, using specific Component Manager routines. To create an instance of a component that has been registered, a program must first find the component. If the seeking program is the same one that registered the component, it already has the component. If not, it can make Component Manager calls to search for all available components with a given type, subtype, and manufacturer; any part of the description can be a wild card. 
  576. Once a component has been found, it must be opened, and this operation produces a reference to the    
  577.  
  578. component instance. Operations can be performed on the component instance using this reference. 
  579. Table 1 compares how classes and components are declared and how instances of each are created. (Note that for components, the code is idealized.) 
  580. CALLING ALL ROUTINES
  581. Calling a routine that operates on a C++ object is slightly different from making a standard routine call: the call more closely resembles a reference to an internal field of a struct. The routine that gets called is identical to any other routine, except that it’s declared within the class definition rather than at the same brace level as the main routine.
  582. Calling a component routine is identical to calling any other routine. The first argument is always the component instance, and other arguments may optionally follow. The return type of every component routine is a long integer, and part of the numerical range is reserved for error messages from either the component or the component dispatch mechanism. 
  583. The Component Manager lets a program issue calls to a component that it has never “met” before. This form of dynamic linking is crude, because no type checking is performed.
  584. Table 1 compares how classes and components are called.
  585. DATA HIDING 
  586. A C++ class can have “private” fields and methods, which are accessible by class methods but not by the caller. The programmer can see these private parts simply by perusing the class declaration. If a change to the implementation of a class requires that the private parts be changed, relinking with the implementation of the class won’t be sufficient: all clients must be recompiled, since the positions of public fields might have changed. (One tricky way around this is to include a private field of type char * that’s really a pointer to the class’s internal state data. The class constructor 
  587.     allocates memory for whatever internal state it likes and coerces a pointer to it to live in that char * field. This technique is useful for object-only software library distribution and also protects proprietary algorithms from curious programmers.)
  588. A component is responsible for allocating memory for its internal state (the component’s “globals”) when it’s opened and releasing that memory when it’s closed. There are both component globals and component instance globals. These correspond to static and automatic variables in a C++ class and have similar utility. A component might keep track of how many instances of itself have been opened and restrict that number by failing on the open call. 
  589. INHERITANCE 
  590. It’s often useful to build software on top of existing functionality or, alternatively, to take existing functionality and alter it to perform a more specialized function. Both of these things can be accomplished for C++ classes with inheritance. In the former case, the new class will have methods that don’t exist in the base class; in the latter, the new class will have methods with the same name as methods in the base class but that take precedence over the base methods.
  591. Components and the Component Manager support both kinds of inheritance as well, as discussed in the preceding article. All components of a given type must support the same set of calls, although this is enforced only by convention. Components of a particular type and subtype may optionally support other calls as well, and components of a particular type, subtype, and manufacturer may support still more calls.
  592. In the case where a component wants to use the services of another component and perhaps override some of its functions with modifications, Component Manager utilities let a component designate another component as its “parent.” A simple protocol ensures that the correct variant of a routine gets called. When a component must call itself, it must issue the call to its child component, if any. When a component wants to
  593.     
  594.  
  595. Table 1
  596. A Comparison of Calls: Classes (Actual Code) Versus Components (Idealized Code)
  597.     
  598. Declaring a Class
  599. class MyClass {
  600. /* Variables and methods for
  601.     the class */
  602. }
  603.  
  604. Creating a Class Instance
  605. MyClass x;
  606.  
  607.  
  608. Calling a Class
  609. x.MyMethod(arg1, arg2);
  610. Implementing a Class
  611. class MyClass {
  612.     void MyMethod(int arg1, int arg2)  {
  613.     /* Some code for MyMethod */
  614.     }
  615. }    Declaring a Component
  616. myComponent = RegisterComponent(MyEntryRoutine,
  617.     myType, mySubType, myManufacturer, 
  618.     "A Component");
  619.  
  620. Creating a Component Instance
  621. myComponent = FindComponent(myType, mySubType,
  622.     myManufacturer);
  623. myInstance = OpenComponent(myComponent);
  624. Calling a Component
  625. result = MyMethod(myInstance, arg1, arg2);
  626. Implementing a Component
  627. long MyEntryRoutine(ComponentParams *params,
  628.                                 char *globals)  {
  629.     switch(params->selector)  {
  630.         case kOpen:
  631.         case kClose:
  632.             return noErr;
  633.         . . .    /* other required calls here */
  634.         case MyMethod:
  635.             /* Do my method. */
  636.             /* arg1 and arg2 are in params. */
  637.             return noErr;
  638.         default:
  639.             return routineNotImplementedErr;
  640.     }
  641. }
  642.     
  643.  
  644. rely on the existing implementation of the parent component, it must pass the call to its parent. 
  645. IMPLEMENTING CLASSES AND COMPONENTS 
  646. My discussion of implementation is based on the 68000 platform, since that’s the only one I’ve scrutinized with regard to compiled C++ and Component Manager calls. 
  647.     The routines that can be used with a C++ class are declared, and optionally implemented, within the class declaration. They behave like normal C routines, as described earlier.
  648. A call to a C++ class that has no parents or descendants is compiled as a direct subroutine call, exactly as is a standard routine call. A call to a C++ class that has    
  649.  
  650. parents or descendants is slightly more complicated. A table lookup is used at run time to determine exactly which implementation of a routine gets called for the particular object being operated on. Such a call takes perhaps a dozen assembly instructions.
  651. A component consists of only a single routine. It’s passed a selector and a parameter block. The selector is used to decide which operation to actually perform, and the parameter block contains all the arguments passed by the caller. 
  652. The component’s parameter block is untyped — the component routine has no way to determine what kinds of arguments were originally passed, and herein lies the danger. Some languages, such as LISP, have untyped arguments; in LISP, however, a routine can determine how many arguments have been passed and what the argument types are. A component interface is more like assembly language — or C without prototypes! — in that it can determine nothing about what has been passed to it. 
  653. You can’t compile a C++ program containing a call to a nonexistent routine; the compiler will balk. (Well, OK, this isn’t strictly true: there are dynamically linking systems for C++, and other languages, that let you call a C++ routine that hasn’t been linked with the rest of the compiled source code; the routine can be linked to later, at run time. But no facility of this type is currently standard in the Macintosh Operating System or supported under the standard Macintosh development tools.) In the case of components, the compiler can’t check for such illegal calls, since the particular components that may be opened are decided at run time. Therefore, the caller must be prepared to handle a “Routine Not Implemented” error if a call is made with an unknown selector. 
  654. All calls to components pass through the Component Manager’s dispatch mechanism. The dispatcher must locate the component’s entry point and globals from the component reference, which is not simply a pointer
  655.     but a packed record containing an index into a table and some bits used to determine whether the component reference is still valid. If a client makes a call to a component it no longer has open, the Component Manager has a statistical likelihood of catching this call and returning an appropriate error. 
  656. The Component Manager has facilities to redispatch the parameter block to one of many routines, and those routines are written to take the arguments as originally passed. The Component Manager was originally written for use on the 68000 series of processor; on computers with that processor, the parameter block doesn’t have to be recopied onto the stack for further dispatching. On other processors the parameters might have to be recopied, however.
  657. The Component Manager has been highly optimized and fast dispatching can reduce its overhead still more, but in general its lookup-and-dispatch process still takes several dozen instructions. If the component being called is using the Component Manager’s inheritance mechanism, further overhead is incurred by passing control to the parent or child component. Overall, the Component Manager is quite efficient, but still not as efficient as direct routine calls.
  658. Table 1 compares how classes and components are implemented. 
  659. IN SUM
  660. Components, as supported by the Component Manager, exhibit many of the features of C++ classes. Both encourage a modular approach to solving problems. Both feature inheritance and data hiding. Where they differ is in how they’re declared and implemented, how they do (or fail to do) type checking, and how expensive they are to call. Each occupies its own distinct niche in Macintosh programming: classes as a way to ease development of a single program, components as a way to add systemwide functionality and give control and choice to the user.  
  661.     
  662.  
  663. TIME BASES: THE HEARTBEAT OF QUICKTIME 
  664. GUILLERMO A. ORTIZ 
  665. A time base is the heartbeat of a QuickTime movie. It keeps the movie going and tells the Movie Toolbox when to stop and when to display the next frame. This article explores the concept of time bases and shows how you can use time bases to affect the behavior of movies as well as how to use time base callback procedures for timing purposes. In a basic sense, a time base can be viewed as the black box that maintains the temporal characteristics of a QuickTime movie. When a movie is playing, some of its temporal characteristics are obvious: it has a duration, it’s “moving” or not, and so on. Some of the not-so-obvious characteristics that a time base keeps track of are also important, such as the clock that governs the passing of time as far as the movie is concerned and whether the movie is looping.
  666. Time bases are created dynamically by the Movie Toolbox each time a movie is opened, rather than being stored with a movie. Time bases can also exist by themselves, with no movie attached, and can therefore be used to time other dynamic events, much as you would use a Time Manager task. 
  667. The QuickTime Movie Toolbox provides a high-level interface that lets you modify all the parameters of a movie, some of which implicitly change its associated time base. Most applications therefore will never need to manipulate time bases directly. Nevertheless, there are situations in which it’s necessary to access time bases more directly, such as the following: 
  668. •    when a document presents multiple views of a movie and all views need to be kept in sync
  669. •    when you need to take advantage of the callback functions of a time base
  670. •    when you’re writing a custom movie controller
  671. This article addresses these situations.
  672.  
  673. THE ARROW OF TIME
  674. First let’s define some of the terms related to the way QuickTime treats time:
  675. •    Time scale: the number of units into which a second is subdivided. For most QuickTime movies, the time scale is set to 600, meaning that the smallest fraction of time measurement for the movie is 1/600th of a second.
  676. •    Rate: the multiplier for the time scale. The rate controls how fast the movie plays. When the rate is 1.0, the movie plays at its normal speed, meaning that for each second of play the movie’s time advances a number of units equal to the time scale. If the rate is between 0.0 and 1.0, the movie plays in slow motion, and fewer units are counted off per second of play. A negative rate implies that the movie is playing backward. A rate of 0 means that the movie is stopped.
  677. •    Time value: indicates where we are in the movie being played back. The time value is given as a number of time scale units. When a movie is playing forward from its start, the current time value can be calculated as
  678.     time elapsed (in seconds) * time scale * rate
  679. You can think of a time base as a dynamic container that holds the following information about a process, normally a movie: the time source (either the clock being used as the master clock or the master time base); the time bounds (the start and stop time values) and the current time value; the rate; the time base flags, indicating different conditions for the time base; and a list of callback routines.
  680. Figure 1 illustrates these concepts and shows how they interact. The figure assumes that the clock or time source ticks at a constant speed; however, you could conceivably use a clock that runs at a varied speed, which would make the movie go faster and slower in sync with the clock.
  681. Figure 1 doesn’t show the effect of the time base flags. In QuickTime versions 
  682. 1.0 and 1.5, two mutually exclusive flags are defined — loopTimeBase and palindromeLoopTimeBase. The loopTimeBase flag causes the time base to go back to the start time value when it reaches the stop time value (or vice versa if the movie is playing in reverse); palindromeLoopTimeBase reverses the direction of play when it gets to the start or stop value of the time base.
  683. THE BASIC STUFF
  684. The QuickTime Movie Toolbox is the best mechanism for manipulating movies and their parameters. The high-level calls provided by the Toolbox are all that most applications will ever need. Using graphics as an analogy, suppose that you wanted to
  685.  
  686. Figure 1
  687. Time Concepts in a QuickTime Movie
  688. draw a complicated image. The easiest way to do this would be with QuickDraw, by calling DrawPicture, but you could also interpret the picture by hand and execute its opcodes individually or even set the video RAM pixels directly! Similarly, when working with a movie, you can work directly with its time base, but it’s best to let the Movie Toolbox do as much as possible — not because it’s the only way, but because it’s safer, it lessens the chances for compatibility problems, and it’s simpler. Thus, for time bases associated with movies, it’s best to call SetMovieTime rather than SetTimeBaseTime and to call SetMovieMasterClock rather than SetTimeBaseMasterClock. 
  689. For those cases in which it makes sense to access and modify time bases directly (as in the scenarios mentioned earlier), the Movie Toolbox provides procedural interfaces that allow you to do so. The sample program TimeBaseSimple provided on the Developer CD Series disc shows how to get a time base from a movie, how to interrogate the time base, and how to change some of its parameters. 
  690. Figure 2 shows the window displayed by TimeBaseSimple. This window displays the duration of the time base (in most cases the same as the duration of the movie), a number obtained by subtracting the start time value from the stop time value. It also shows the rate at which the movie is playing, the preferred rate (a value normally set
  691. Figure 2
  692. TimeBaseSimple Window
  693.  
  694. when the movie is created; it will differ from the rate if the movie is stopped or is playing in reverse due to palindrome looping), the name of the clock being used, and the type of looping in effect. 
  695. Through this window, the user can set the preferred rate, which is the rate the Movie Toolbox and the standard movie controller use to set the movie in motion. Radio buttons allow the user to specify the type of looping via the time base flags. The user can also scan the movie backward and forward by clicking the shuttle control in the top left of the window. This control is included in the sample to show how to go forward or backward in the movie by changing the current time value in the movie’s time base.
  696. GETTING AND CHANGING A TIME BASE
  697. Before you can begin working with a time base, you have to get it. TimeBaseSimple does this with the following line:
  698. tb := GetMovieTimeBase(gMoov);            (* get movie's time base *)
  699. GetMovieTimeBase returns the time base associated with the movie gMoov. The variable tb receives this value. 
  700. Getting the clock information. Once you’ve retrieved the time base, you can get the information about it. TimeBaseSimple acquires the information regarding the master clock in order to display its name in the window. The clock information is obtained via the Component Manager. First we obtain the clock component being used by the time base; then we use it to get the information from the Component Manager. 
  701. clock := GetTimeBaseMasterClock(tb);    (* instance of clock being used *)
  702. err := GetComponentInfo(Component(clock), cd, Handle(clockN), NIL, NIL); 
  703. In the variable cd, a ComponentDescription record, GetComponentInfo returns the type of component, the subtype, the manufacturer, and the component flags. Note that the program could be written to pass NIL instead, because the information received is not used. clockN is a handle in which GetComponentInfo returns the name of the component, which is what we’re really looking for. 
  704. Note also that when a time base has been enslaved to another (as discussed later), GetTimeBaseMasterClock returns NIL. To ensure there’s a master clock associated with a time base, the application should first call GetTimeBaseMasterTimeBase; a NIL result indicates that the time base has a master clock, whereas a nonzero result indicates that a master time base exists that contains the master clock. 
  705. Getting and changing the time values. You can get the start and stop time values for a time base as follows: 
  706.  
  707. scale := GetMovieTimeScale(gMoov);    (* first get the time scale *)
  708. startTimeValue := 
  709.     GetTimeBaseStartTime(tb, scale, startTime);    (* get start time *)
  710. stopTimeValue :=
  711.     GetTimeBaseStopTime(tb, scale, stopTime);         (* get stop time *)
  712. Note that the start and stop times returned are given in terms of the time scale being passed; this means that we can get different values for the same time point, depending on the granularity we require. As a matter of fact, in TimeBaseSimple, when we’re preparing the shuttle control, we get the same values but with a different scale:
  713. shuttleScale := moovScale DIV 10;
  714. localDuration := GetTimeBaseStopTime(tBase, shuttleScale, tr);
  715. localDuration := 
  716.         localDuration - GetTimeBaseStartTime(tBase, shuttleScale, tr);
  717. The shuttle control in TimeBaseSimple lets you scan the movie backward and forward. This is implemented by changing the current time value for the time base, which looks something like this:
  718. SetTimeBaseValue(gTBState.tBase, value*10, gTBState.moovScale);
  719.                                                             (* 'movie scale/10' tick *)
  720. Setting the rate. Although you can obtain the current rate for a time base and set the rate directly, for a time base associated with a movie a better approach is to make Movie Toolbox calls such as StartMovie or SetMovieRate. The Movie Toolbox executes these calls by changing the time base associated with the movie. For example, StartMovie gets the preferred rate and sets the time base rate to it, setting the movie’s time base in motion. 
  721. When the movie is being controlled by the standard movie controller, it’s 
  722. important to call MCMovieChanged if you change any movie characteristic, such as the rate or the current time value, to keep the controller in sync with the new settings. As mentioned earlier, it’s better to use high-level interfaces to enact these changes; for example, to change the rate via the movie controller, you can call MCDoAction(mc, mcActionPlay, newRate). 
  723. Using the time base flags. When you access a time base directly, you can set its movie to loop, either normally or backward and forward, by setting the time base flags. GetTimeBaseFlags retrieves the flags for inspection, and SetTimeBaseFlags modifies the flags. In TimeBaseSimple, the SetTBLoop routine sets the looping flags: 
  724. (* Changes the state of looping in the movie if needed. *)
  725. PROCEDURE SetTBLoop(newFlags: LONGINT);
  726. VAR        targetTB: TimeBase;
  727.  
  728. BEGIN
  729.     targetTB := gTBState.tBase;                     (* the movie's time base *)
  730.     SetTimeBaseFlags(targetTB, newFlags);    (* change it *)
  731.     gTBState.flags := newFlags;                     (* remember new state *)
  732. END;
  733. Now that you’ve seen how you can access the state information of a time base, let’s look at some of the possible uses of time bases. 
  734. TIME SLAVES 
  735. One interesting situation arises when you need to play back two or more instances of a movie simultaneously. In such situations you can synchronize the movies by enslaving all the instances to one time base. The central idea behind this is to have control of the movie’s time flow pass through a single point instead of having a number of individual time bases running at the same time. The sample program TimeBaseSlave on the Developer CD Series disc shows how to do this.
  736. TimeBaseSlave splits the window in which the selected movie is to play into four parts, with the quarters rotating while the movie is playing back. Figure 3 shows the TimeBaseSlave window at its four stages of playback. 
  737.     
  738.     
  739. Figure 3
  740. TimeBaseSlave Window at its Four Stages of Playback
  741.  
  742. The basic programming strategy is as follows:
  743. 1.    Get the time base associated with one of the instances of the movie.
  744. 2.    Force the time base from step 1 to be used for the other instances.
  745. 3.    Start playing the first instance of the movie, controlling it in any way you like. (TimeBaseSlave starts the movie and sets it back to the beginning when it reaches the end.)
  746. 4.    The other instances of the movie will follow blindly.
  747. The EnslaveMovies routine in TimeBaseSlave takes care of all this: FUNCTION EnslaveMovies: OSErr;
  748. VAR        err:                 OSErr;
  749.             masterTimeBase:    TimeBase;
  750.             slaveZero:            TimeRecord;
  751.             slaveZeroTV:        TimeValue;
  752.             masterScale:        TimeScale;
  753.             count:                INTEGER;
  754. BEGIN
  755.     err := noErr;
  756.     masterTimeBase := GetMovieTimeBase(gMoov[1]);
  757.                                             {* time base of first movie instance *}
  758.     masterScale := GetMovieTimeScale(gMoov[1]);
  759.                                             {* needed for SetMovieMasterTimeBase *}
  760.     slaveZeroTV := 
  761.         GetTimeBaseStartTime(masterTimeBase, masterScale, slaveZero); 
  762.                                                                                 {* ditto *}
  763.     FOR count := 2 TO 4 DO         (* slave all movies to first time base *)
  764.         BEGIN
  765.             SetMovieMasterTimeBase(gMoov[count], masterTimeBase, slaveZero);
  766.                                                                          {* now we do it *}
  767.  
  768.             (* real programmers do check for errors *)
  769.             err := GetMoviesError;
  770.             IF err <> noErr THEN 
  771.                 BEGIN
  772.                     ErrorControl('SetMovieMasterTimeBase failed');
  773.                 LEAVE;
  774.                 END;
  775.         END;
  776.     EnslaveMovies := err;
  777. END;
  778.  
  779. Once the slave instances of the movie have been set to obey the first time base, their behavior will mimic the first movie’s actions. In the TimeBaseSlave code, it appears that only the first instance is started and that only it is rewound when the end is reached. These actions are accomplished in TimeBaseSlave by calls to StartMovie and GoToBeginningOfMovie, respectively, with the first movie passed as a parameter. 
  780. You could use this technique to play different movies but have all of them under a single control. It might also be useful when no movies are involved at all but time bases are being used for timing purposes.
  781. TIMELY TASKS
  782. TimeBaseSlave also shows how to take advantage of the callback capabilities of time bases. Callbacks are useful when an application needs to execute given tasks when the time base passes through certain states. You can program time base callbacks to be triggered under the following conditions:
  783. •    when a certain time value is encountered (callBackAtTime)
  784. •    when a rate change occurs (callBackAtRate)
  785. •    when there’s a jump in time (callBackAtTimeJump)
  786. •    when the start or stop time is reached (callBackAtExtremes)
  787. Passing callBackAtTime to NewCallBack shows the use of callbacks that are executed at a specified time value. TimeBaseSlave uses the callback service to rotate the movie pieces at regular intervals; we ask to be called every three seconds in movie time. 
  788. Note that the time value triggering the callback depends on the rate of the time base. In other words, the time value specified will never be reached if the movie isn’t playing (if the rate is 0). If the rate is something other than 1.0 (if the movie is accelerated or is moving in slow motion or in reverse), the specified break will come every three seconds in movie time, not clock time.
  789. CREATING A CALLBACK 
  790. First TimeBaseSlave has to create a callback. This could be accomplished as follows:
  791. cb := NewCallBack(tb, callBackAtTime);
  792. Since we want to be called at interrupt time, however, the line looks like this:
  793. cb := NewCallBack(tb, callBackAtTime + callBackAtInterrupt);
  794. The variable cb receives a callback, which depends on the time base tb. The callback will be executed at specific times and can be scheduled to fire at interrupt time.
  795.  
  796. NewCallBack moves memory, which means that you can’t create a callback while in an interrupt handler. Electing to be called at interrupt time has an advantage over normal interrupt-driven tasks, however, as I’ll explain later. 
  797. PRIMING THE CALLBACK
  798. Once we’re satisfied that the callback was created (cb <> NIL), we proceed to prime the callback. At this point we have only the hook into the time base; priming the callback schedules it to call us. This is accomplished by CallMeWhen, as follows: 
  799. err := CallMeWhen(cb, @FlipPieces, callWhen, triggerTimeFwd, callWhen,
  800.             scale);
  801. FlipPieces is the routine that we want to have called when the specified time value arrives. The callWhen variable is passed both as a refCon (the third parameter) and as the time to trigger the callback (the fifth parameter), the idea being that FlipPieces will need to know the current time. Of course, the refCon parameter can also be used for any other purpose you may see fit.
  802. The time at which the callback is triggered is given a frame of reference by the scale parameter. Remember that a time value without a time scale has no meaning at all. Finally, triggerTimeFwd means that our routine will be called only when the movie is moving forward. This is reasonable since TimeBaseSlave plays back the selected movie in forward motion only.
  803. THE FLIPPIECES ROUTINE 
  804. The routine responsible for servicing the callback follows a simple interface and is defined in TimeBaseSlave as follows:
  805. PROCEDURE FlipPieces(cb: QTCallBack; refCon: LONGINT); (* CallBackProc *)
  806. (* The refCon parameter contains the time that triggers the callback; 
  807. this is the value passed to the CallMeWhen routine. *)
  808. VAR    j:             INTEGER;
  809.         callWhen:    LONGINT;
  810.         scale:        TimeScale;
  811.         stop:        LONGINT;
  812.         tr:            TimeRecord;
  813.         tb:            TimeBase;
  814.         err:            OSErr;
  815. BEGIN
  816.     stage := (stage + 1) MOD 4;
  817.     FOR j := 1 TO MoviePieces DO
  818.         ShiftMoviePieces(j);    (* turn the movie pieces around *)
  819.     scale := 100;                    (* 100 units in this scale means 1 second *)
  820.     callWhen := refCon + 3*scale;        (* call me in 3 seconds *)
  821.     tb := GetCallBackTimeBase(cb);        (* needed for next line *)
  822.     stop := GetTimeBaseStopTime(tb, scale, tr);
  823.     IF callWhen > stop THEN     (* wrap around the three seconds *)
  824.         callWhen := GetTimeBaseStartTime(tb, scale, tr) + callWhen - stop;
  825.                                                                     
  826.     (* now to really reprime the callback *)
  827.     err := CallMeWhen(cb, @FlipPieces, callWhen,
  828.         triggerTimeFwd + callBackAtInterrupt, callWhen, scale);
  829. END;
  830. TimeBaseSlave does the actual splitting of the movie into different views by creating four instances of the same movie and setting the movie clipping region for each one to be the rectangle in which each is expected to display. When it’s time to move the pieces, the movie box of each instance is offset to cover the next spot. Take a look at SplitMovie and ShiftMoviePieces to see the code. 
  831. A FEW CONSIDERATIONS
  832. Inquisitive readers will have noted that when calling CallMeWhen, TimeBaseSlave uses both noninterrupt and interrupt-time invocations. This was done to illustrate one of the advantages of using Movie Toolbox callbacks: the Toolbox takes care of setting up the A5 world when your service routine is called. Having the A5 world set up properly is useful when your program needs to access global variables; other interrupt handlers can’t count on A5 being right when they’re invoked. 
  833. Using time base interrupt callback routines does not, however, liberate the application from the normal limitations of interrupt-servicing routines; for example, you can’t move memory.
  834. As mentioned earlier, although time bases are created automatically when a movie is opened or created, they can also exist on their own. If an application requires services that allow control over the passing of time, it can create a time base and use callbacks to trigger the service routines required. Keep in mind that even when a time base has no movie, the application must still call MoviesTask to guarantee that callback routines will get time to run. 
  835. OTHER TYPES OF CALLBACKS
  836. Time base callbacks can also be triggered by a change in the rate or by a jump in the time value. A change in the rate occurs when the movie is stopped while it’s playing, when a movie is set in motion, or when the playback speed is somehow changed. A jump in time occurs when the current time value in the time base is set to a value outside the normal flow — for example, when a movie that’s playing is set back to the beginning. In addition, QuickTime 1.5 introduces callbacks “at extremes” that can be triggered when the time base time reaches the start or stop time.
  837. These three means of triggering a callback are of interest only if the code is tracking the behavior of the movie, as a movie controller or a media handler would need to do;
  838. the constants used for calling NewCallBack in these cases are callBackAtRate, callBackAtTimeJump, and callBackAtExtremes. 
  839. FINALLY
  840. If you’d like to play with the sample programs, you may want to try some variations. For instance, it’s very easy to modify TimeBaseSlave to have all the movies play at their own beat, with separate time bases, and compare the performance with the original TimeBaseSlave. You could also modify TimeBaseSimple to see the time values obtained with different time scales.
  841. Time bases are an important part of the QuickTime Movie Toolbox. Understanding their role in the way movies play back can be extremely important for developers trying to push the envelope in writing new and innovative QuickTime applications. This article has opened the door; now it’s up to you to decide whether this route will prove beneficial to your efforts.
  842.     HIGHLIGHTS OF QUICKTIME 1.5 NEW FEATURES    
  843.     Listed below are some of the more significant
  844.     features of QuickTime 1.5.
  845.     •    Photo CD: Using QuickTime 1.5 and the Photo CD Access extension, you can work with Kodak Photo CDs on your Macintosh. Photos on the CD appear as standard PICT files and can be opened in any application that opens pictures.
  846.     •    Compact video compressor: A new compressor has been added that provides high-quailty, low data rate playback.
  847.     •    Movie import: Any application that opens movies using QuickTime’s Standard File Preview can import PICS, AIFF, PICT, and System 7 sound files.
  848.     •    1-bit dither: Playback performace of color movies has been significantly enhanced on black-and-white (1-bit) displays. This is particularly useful on PowerBook computers.
  849.         •    Sequence grabber dialogs: To provide for a more flexible and consistent user interface for configuring capture devices, the sequence grabber provides a set of standard configuration dialogs. Support for sound capture is also substantially improved.
  850.     •    Text media handler: In addition to sound and video, QuickTime 1.5 has built-in support for text. The text media handler is built using QuickTime’s new Generic Media handler, which allows you to create your own QuickTime data types.
  851.     •    Standard compression: The Standard Image Compression dialog is now built into QuickTime. The user can pan and zoom the test image within Standard Compression. 
  852.     
  853.  
  854. GRAPHICAL TRUFFLES 
  855.     ANIMATION AT A GLANCE 
  856.     
  857. EDGAR LEE 
  858. The Macintosh has always provided animation capabilities. From the early Macintosh 128K to current CPUs, animation has consistently played a large part in the development of software. And though CPU models continue to change, the theories and concepts behind animation have stayed basically the same. Simply stated, animation is the process of stepping through a sequence of images, each slightly different from the previous.
  859. The thought of animation on the Macintosh usually brings to mind games and multimedia, when in fact the actual use of animation is more prevalent than most people imagine. I’ll describe some common uses and methods of performing animation and get you started on writing your own animation sequences.
  860. METHOD 1: PRIMITIVE BUT EFFECTIVE
  861. One of the most fundamental methods of animation is using the srcXor transfer mode. The basic idea is that once you’ve drawn something in this mode, you can erase it simply by drawing it again, restoring the bits underneath to their previous state. Primitive though it may be, this method is common to many applications. Probably the most obvious example of it can be found in the Finder. Familiar to even the novice Macintosh user is the dotted rectangle that often appears during desktop navigation. The movement of the dotted rectangle, which appears when the user selects multiple icons or drags windows across the desktop, is a simple     form of animation. The dotted rectangle is also used to create the zooming effect when desktop folders are opened and closed. 
  862. To use this method, you set the current transfer mode to srcXor before drawing the object you plan to animate. In the desktop example, the Finder switches to srcXor mode and then draws the dotted rectangle with a simple FrameRect call, with the PenPat set to 50% gray. The movement of the dotted rectangle is accomplished by redrawing the rectangle at its previous position before drawing it at its new location. With srcXor mode, simply redrawing the rectangle at the same position restores the desktop to its original state. So by repeatedly drawing and redrawing the rectangle in its new position, you float a frame across the screen without damaging the contents of the desktop.
  863. As a variation on the dotted rectangle, applications use what’s called the “marching ants” effect. With this effect, the bounding frame gives the illusion that the dashed lines or “ants” are moving around the edges of the box, thereby producing an animated and more interesting visual appearance. The marching ants effect is simple to create. The most common way to do this is with a simple 8-by-8-bit pattern. To create the illusion, you draw a bounding frame by calling FrameRect, with the PenMode set to srcXor and the PenPat set to a pattern defined with diagonal stripes (see the illustration below). Shifting the pattern up one row, and then wrapping the first row of the pattern to the last row, creates the effect. If the rows were shifted down rather than up, the ants 
  864.     
  865.  
  866. would appear to move in the opposite direction. In either case, the ants typically start at one corner of the box and then end at the opposite corner.
  867. As with the dotted rectangle, the frame is continually drawn and redrawn, but this time with each new updated pattern. Note the difference between the two effects when the frame is drawn: With the ants, the frame is constantly being drawn and redrawn even if the rectangle’s coordinates haven’t changed. With the dotted rectangle, the frame is redrawn only when its position has changed. Since no animation takes place when the dotted rectangle is sitting in the same position, it’s not necessary to continually draw the frame in that case.
  868. METHOD 2: NOT SEEING IS MORE THAN BELIEVING 
  869. Another method of performing animation is to use off-screen drawing. With this method, the actual drawing is being done behind the user’s back. The animation frames are prepared off-screen and quickly transferred to the screen with CopyBits to create the animation sequence. Regardless of what CPU you’re running, this method can provide excellent animation effects. And with the advent of GWorlds to simplify the process of building off-screen environments, performing animation with this technique has become much easier. 
  870. In this section I’ll provide some important points to consider when building your own off-screen world and describe how to apply these off-screen worlds to animation. For a detailed description of creating your own custom GDevices, cGrafPorts, and pixMaps, see the Macintosh Technical Note “Principia Off-Screen Graphics Environments.”
  871. Before even considering off-screen animation, you need to determine whether your Macintosh has enough memory for creating the off-screen environment. Without sufficient memory, you might as well forget it. Having high-performance, high-quality animation isn’t cheap. Most of what determines the amount of     required memory is the off-screen world’s dimensions and pixel depth.
  872. •    Typically, or at least for this method, the dimensions of the off-screen world are the same as those of the entire on-screen area. 
  873. •    For the depth of the off-screen world, you’ll need to determine whether it’s based on the depth of the images used in the window or on the depth of the GDevice intersecting the window. In the case where the GDevice is set to direct colors, you may want to create only an 8-bit off-screen world to save memory if your images use only 256 or fewer colors. On the other hand, you may want to create an off-screen world equal to the depth of the GDevice containing the window, for better data transfer performance. 
  874. Once you’ve determined the dimensions and depth for the off-screen world, you’re ready to create the off-screen environment. Note that if you’re using the GWorlds introduced with 32-Bit QuickDraw, many of the off-screen initialization procedures have been simplified. Also, with certain video display cards, the GWorlds can be cached into the NuBus™ card’s memory, providing even better performance when off-screen worlds are used. 
  875. To create the off-screen environment, you pass NewGWorld the off-screen dimensions, depth, and color table, and the routine creates the environment or warns you if there wasn’t sufficient memory. After you’ve made all the required memory checks and created your off-screen environment, either by hand or with NewGWorld, the next step is to create the animation sequence.
  876. In the simplest case, the off-screen world is used to store an identical copy of what’s displayed on the screen. Rather than erasing and drawing the moving object on-screen, you perform all this in the off-screen world. Once the moving object has been drawn in its new position, the off-screen image is transferred to the screen. By continually drawing the next frame of the moving object in the off-screen world before displaying     
  877.  
  878. it on the screen, you produce the animation effect. The following steps describe the process.
  879. 1.    Assuming that the entire window is being used for the animation, create an off-screen environment of the same dimensions as the window, either by hand or with NewGWorld. When you’re defining the depth and color table of the off-screen world, remember that QuickDraw requires extra time to map colors when the destination GDevice’s depth and color table are different from those of the source. 
  880. 2.    Switch to the off-screen grafPort and GDevice and draw the background image. This is the image that the object will be moved on top of; typically it won’t change.
  881. 3.    Draw the object that will be moved or animated into the off-screen world. Actually, any image not part of the background image should be drawn at this time. Also, since the object overwrites the background image, the background under the object will eventually need to be restored.
  882. 4.    Switch back to the on-screen grafPort and GDevice and use CopyBits to transfer the off-screen pixMap to the screen. 
  883. These steps create just one frame of the animation sequence. To create the full sequence, repeat the last three steps until the animation is complete. In step 2, instead of redrawing the entire background, you may want to redraw just the areas that need to be restored, if that information is available. By redrawing just a portion of the damaged background, you’ll notice improved performance, especially when working with higher pixel depths.
  884. Besides providing a quick introduction to off-screen animation, this method has the advantage that it’s simple and straightforward. Since all the objects and images are drawn at one time and in the same environment, it’s easy to create your sequences and synchronize the animation for any moving object. However, as mentioned earlier, large off-screen images at higher pixel depths can really affect the performance     of the animation. To overcome this problem, you need to use multiple off-screen worlds.   
  885. METHOD 3: SWITCHING INTO HIGH GEAR 
  886. The concept of multilayer off-screen worlds isn’t much different from the basics of off-screen animation. Rather than having just one off-screen environment, you’ve also got an intermediate off-screen layer in which all the actual drawing is completed, leaving the background layer undamaged. So unlike the previous method, where one off-screen world was used for storing the background and the moving object, this method uses two separate off-screen worlds to maintain this information. The following steps describe how the intermediate layer fits in.
  887. 1.    Again, create the background off-screen layer with the same dimensions as the window.
  888. 2.    Switch the current grafPort and GDevice to the background layer, then draw the background image. This layer will never change, since its main purpose is to restore the overwritten areas of the intermediate layer.
  889. 3.    Find the common rectangle containing the object’s previous location and its new location. This can be calculated by passing UnionRect the object’s bounding rectangle for both positions. Be sure the common rectangle uses coordinates local to the window. 
  890. 4.    Create the intermediate off-screen layer with the dimensions of the common rectangle.
  891. 5.    Switch to the intermediate layer and transfer the area of the corresponding common rectangle of the background layer to the current layer. This will restore the area at which the object was last positioned. Rather than having to redraw the background for each frame, you simply replace the damaged area with the background image stored in memory.
  892. 6.    Draw the moving object at its new location in the intermediate layer. If multiple objects are within the same bounding region of this layer, they should be drawn at this time as well.    
  893.  
  894. 7.    Switch to the window layer and use CopyBits to transfer the contents of the intermediate layer to the screen.
  895. Finally, to create the entire animation sequence, repeat steps 3-7 until the animation is complete. The illustration below shows the process of creating one of the frames in the sequence. In this frame, the moving object is the sun, drawn on top of the background image of the mountains.
  896. When moving multiple objects, you’ll need to decide whether to handle the objects separately or in groups. In the case where objects are widely dispersed in the window, it would be more practical to create a separate intermediate layer for each object than to create one layer containing all the objects. Since no changes are occurring in places between widely spread objects, unnecessary time and memory would be spent updating these areas. 
  897. However, if the objects are closely spaced, grouping the objects and creating one intermediate layer would make more sense. Since objects can overlap each other, creating separate off-screen worlds would not be too practical or easily accomplished. So when determining the number of intermediate off-screen layers, you’ll want to first check where the objects are located in the window.
  898. The main advantage of using the intermediate layer is the performance improvement. As mentioned earlier, transferring large blocks of data at high pixel depths can be time consuming. As you can guess, the smaller the transfer image, the less time QuickDraw requires.      Another advantage of using this layer is the ability to isolate the background image. Since all the drawing is taking place in the intermediate layer, there’s no need to redraw the background image for each frame, which can be a real time saver for complex backgrounds. Though more memory is required with the addition of the intermediate layer, the performance gains can sometimes make the extra memory worth it.
  899. Finally, to fully optimize the animation performance, you’ll want to be sure the data transfer from the off-screen layers is as fast as possible. Since you can influence the speed of CopyBits, here are a few points you’ll want to keep in mind when creating and using off-screen layers:
  900. •    For indexed GDevices, the same color table should be used for the window and the off-screen layers. Since no color mapping should be required when the source and destination share the same color table, less time is needed for the data transfer. 
  901. •    Be sure no nonrectangular clipping is involved in the CopyBits operation. Having to check which pixels should or shouldn’t be clipped can really slow down the data transfer.
  902. •    Use srcCopy as the transfer mode for CopyBits. 
  903. Any other mode takes extra time to perform the logical operations on the source and destination pixels. 
  904. •    Set the current port’s foreground color to black and background color to white before calling CopyBits. This will ensure that no colorizing (which can be slow) takes place.
  905. •    Make sure no dithering takes place. Unless you have your own rippin’ fast method for dithering, try to stay away from it. If possible, prepare the images in the off-screen layers in such a way that dithering isn’t needed.
  906. •    Keep the same alignment of pixels for the source and destination pixMaps. Having to shift unaligned pixels can take time.
  907. •    The source and destination rectangles should be the same size. Scaling requires extra work.    
  908.  
  909. By following as many of these points as possible, you’ll improve the performance that you’ll get out of CopyBits and waste less time in the on-screen updates. 
  910. LIGHTS, CAMERA, ACTION!
  911. I’ve presented several methods of animation; which method to use depends on your application. In fact, you may choose to use several methods or switch between methods under different system requirements. Say your application uses multiple layering for optimal animation; under low-memory conditions, you may want to switch to just one off-screen world to provide at least some type of off-screen animation. But if that isn’t even an option, you may have to do all the animation on-screen. For an example that does exactly that, see DTS.Draw in the Sample Code folder on the Developer CD Series disc. If sufficient memory is available to create the off-screen worlds, the application uses the multilayer method; otherwise, the application decides on the next best method based on the current available memory. 
  912. This column has described different animation techniques, but the principle behind them is basically the same, even if the results don’t show it. Given a set     of slightly different images, all the methods involve stepping through the series of images, where each object in the image is erased before the next object in the series is displayed.
  913. Animation provides excellent visual effects, more fun for the programmer, and most important, an enhanced experience for the user. Now that you’ve got the basics of animation on the Macintosh, I hope you’ll be inspired to animate your own applications!
  914.     RECOMMENDED READING
  915.     •    “Macintosh Display Card 8•24 GC: The Naked Truth” 
  916. by Guillermo Ortiz, develop Issue 3.
  917.     •    Macintosh Technical Notes “Principia Off-Screen Graphics Environments” (formerly #120) and “Of Time and Space and _CopyBits” (formerly #277).
  918.     •    Computer Graphics: Principles and Practice, 2nd ed., by J. D. Foley, A. Van Dam, S. K. Feiner, and J. F. Hughes (Addison-Wesley, 1990), Chapter 21. 
  919.     
  920.  
  921. BETTER APPLE EVENT CODING THROUGH OBJECTS
  922. ERIC M. BERDAHL
  923. In “Apple Event Objects and You” in develop Issue 10, Richard Clark discusses a procedural approach to programming for Apple events and goes into details of the Apple event object model. This article reveals a few simple truths about the significance of Apple events and the Apple event object model, focusing on how the object model maps onto a typical object-oriented application. It also provides an object-oriented C++ framework for adding scripting support.It’s every developer’s worst nightmare: Your team has just spent the last two years putting the finishing touches on the latest version of Turbo WhizzyWorks II NT Pro, which does everything, including make coffee. As a reward for your great work, the team is now preparing to do some serious tanning development on an exotic island. Then, Marketing comes in with “one last request.” They promise it’s the last thing they’ll ask for before shipping, and in a weak moment, you agree that one last little feature won’t hurt your itinerary. “Good,” quips the product manager, “then as soon as you add full scripting support, you can enjoy your vacation.”
  924. You know that to add scripting support, you need to delve into Apple events. You think this requires learning about Apple events, the Apple event object model, and scripting systems. Further, you think Apple events must be designed into your application from the ground up and can’t possibly be added without a complete redesign. Which of the following is the appropriate reaction to Marketing’s request?
  925. A.    Immediately strangle your sales manager and plead justifiable homicide.
  926. B.    Look around while laughing hysterically and try to find the hidden Candid Camera.
  927. C.    Change jobs.
  928. D.    Feign deafness.
  929. E.    None of the above.
  930.  
  931. Unfortunately, there’s no correct answer, but the scenario is all too real as developers are increasingly being asked to add scripting support to their applications. The design of Apple events and the Apple event object model can provide the user with more power than any other scripting system. However, to access the power of the design you need to work with the complex interface provided by the Apple Event Manager. By its nature, this interface collapses to a procedural plane of programming that prevents developers from fully taking advantage of the object-oriented design inherent in the Apple event world. The Apple event object model is difficult to implement without some fancy footwork on the part of your framework. But remember the words of Marshall Brodeen, “All magic tricks are easy, once you know the secret.” With this in mind, join me on a trip through the rabbit hole into AppleEventLand.
  932. WHAT ARE APPLE EVENTS AND THE OBJECT MODEL?
  933. Whenever I give presentations on Apple events, the audience has an overwhelming urge to ignore the theory and jump into coding. Resist the urge. For most developers Apple events provide an unfamiliar perspective on application design. To appreciate the significance of Apple events and the object model, it’s important to understand their underlying concepts and background. So, although you’ll be reading about code later, a little theory needs to come first.
  934. At the most basic level, Apple events are a program-to-program communication (PPC) system, where program is defined as a piece of code that the Macintosh can see as an application (in other words, that has a real WaitNextEvent-based event loop). However, billing Apple events as PPC is akin to describing an F-16 as merely a plane. To fully understand how Apple events are more than simple program-to-program communication, you need to take a look at the Apple event object model. 
  935. The object model isn’t really defined in a pithy paragraph of Inside Macintosh, but is instead a holistic approach to dealing with things that users call objects. In a literal sense, the object model is a software developer’s description of user-centric objects or cognitive objects.
  936. COGNITIVE THEORY
  937. Cognitive science tells us that people interact with the world through objects. A printed copy of develop is an object, a plant in the corner of your office is an object, and a can of Coke Classic on your desk is an object. Each of the objects has properties, behaviors, and parts. Some properties exist for each of the objects (for example, each one has a name) and other properties make sense for only some of the objects (for example, page size makes sense only when applied to develop). Behaviors are quite similar to properties in their ephemeral binding to objects. Only Coke will fizz, but all three objects will decompose. However, they each decompose in a different way. Further, each object can be separated into arbitrary parts that are themselves objects. The plant can be separated into branches, which can in turn be separated
  938.  into leaves. The plant itself can also be separated into leaves, so leaves are contained by both branch objects and plant objects.
  939. BACK INSIDE THE COMPUTER
  940. Now, since a user will someday interact with your software, and since users interact with the world in terms of cognitive objects, it makes sense to model software in terms of cognitive objects. Hence, the object model describes objects in a rather ghostlike fashion whereby objects have behaviors and properties and contain other objects. Although the object model defines an inheritance for each category of objects (for example, Journal might inherit from OpenableThing which might inherit from Object), it’s used only for the purpose of grouping similar behaviors. Just as in the mind, the only thing that’s important is the identity of a specific object in existence at a given time — its categorization is purely a detail of implementation.
  941. Gee, this sounds a lot like what real programmers mean when they talk about objects. Strangely enough, real objects and cognitive objects are quite related. Many references cite cognitive theory as justification for beginning to program in an object-oriented style. Object-oriented code tries to get closer to the language of the native operating system of the human mind than traditional procedural approaches, and the format of an Apple event object mirrors natural language to a surprisingly large degree. It comes as no surprise, then, that Good Object Design lends itself quite easily to slipping in support for Apple event scripting.
  942. APPLE EVENTS SCRIPTING AND OBJECTS
  943. The motivation for you to provide object model support is so that your users can “script” your application. There are a variety of solutions available today that allow advanced users to write things that resemble DOS batch files or UNIX® shell scripts. These entities are commonly called scripts, but in the context of Apple events a script is something with greater potential. Whenever a user thinks “I want to sharpen the area around the rose in this picture,” a script has been formed. If this seems too simplistic, consider it again. Script here refers to the earliest conception of a user’s intent to do something. It’s not relegated to the world of the computer and does not imply any given form or class of forms; an oral representation (voice interface a la the Knowledge Navigator) is equally as valid as a written one (traditional scripting systems). From this perspective, the definition of script takes the user to a greater depth of control over applications than previously dreamed of, allowing access to the very engine of your application by the very engine of the user. This is the great empowering ability of Apple events: they enable users to use their native operating system — the mind — with little or no translation into computerese. 
  944. OBJECT-ORIENTED PROGRAMMING OBJECTS
  945. The biggest problem with Apple event objects is the interface provided by the Apple Event Manager. Instead of allowing you to write real object-oriented source code
  946.  using a given class library that implements basic Apple event and object model functionality, the Apple Event Manager requires you to register every detail programmatically. You must declare what classes exist, which methods exist and where, and what relationships are possible within and between classes. Although at first this flexibility seems advantageous, many developers find it a problem later when they have to declare everything again at run time. Anyone with secret desires to design an object-oriented runtime environment and a compiler/linker combination to support that environment will feel quite at home with Apple event coding.
  947. The second biggest problem with Apple event objects is that programs aren’t written in the Apple event (user) world. Instead, they’re often written in object-oriented programming languages like LISP and C++. What’s needed is a good generic interface to translate objects from the user world of natural language into the world of LISP or C++ objects. Scripting systems do some of the work by delivering Apple event objects to applications in the form of object specifiers, a strange data structure that resembles a binary form of natural language stuffed into the familiar Apple event generic data structure AEDesc. However, object-oriented applications ship objects around in the form of . . . well . . . objects! So, you need translation from binary natural language to actual objects. Easy, huh? (Don’t hurt me yet — this will seem fairly straightforward after reading a bit further.)
  948. Presenting a new interface should solve the problem of the Apple Event Manager interfaces. Presenting that new interface in terms of the familiar object-oriented class libraries should solve the problem of different paradigms. So, if these two problems are approached with an object perspective, it’s clear that some of the classes in your program need to include a set of methods that implement object model protocols. Application domain classes must be able to return objects contained within them and to perform generic operations on themselves. It turns out that if your classes also provide the ability to count the number of a specific type of object they contain, you can provide a rudimentary, yet powerful, parsing engine for transforming objects from the Apple event world into the traditional object programming world.
  949. Further analysis indicates that only those application domain classes that correspond to object model classes need this protocol. This indicates that the protocol for providing Apple event object model support is probably appropriate to provide in a mixin class (a class that’s meant to be multiply inherited from). In this way, only those classes that need to provide object model support must provide the necessary methods. In the sample application discussed later, that class is called MAppleObject. MAppleObject plays a key role in UAppleObject, a generic unit that can be used to provide Apple event object model support to any well-designed C++ application.
  950. Apple provides a convenient solution to the user versus programming language problem in the form of the Object Support Library (OSL). The OSL has the specific responsibility of turning an object specifier into an application’s internal representation of an object. (See “A Sample OSL Resolution” for an example of how
  951.  A SAMPLE OSL RESOLUTION    
  952. Here’s a short example to give you a feel for how the OSL actually works. Don’t read too much into the details of object resolution, but do try to understand the flow and methodology the OSL applies to resolve object specifiers. Also, don’t worry too much about how the OSL asks questions; the protocol you’ll actually be using in UAppleObject hides such details from you. 
  953. Figure 1 on the next page gives an overview of the process. Consider the simple object specifier “the third pixel in the first scan line of the image called ‘Girl with Hat,’” and an Apple event that says “Lighten the third pixel in the first scan line of the image called ‘Girl with Hat’ by twenty gray levels.” On receiving this Apple event (Lighten) the application notes that the direct object of the event (the third pixel in the first scan line of the image called “Girl with Hat”) is an object specifier and asks the OSL to resolve it into a real object.
  954. At this point the parsing engine in the OSL takes over, beginning a dialog with your application through a set of preregistered callback routines. Notice that the object specifier bears a striking resemblance to a clause of natural language — English in this case. This is not unintentional. Apple event objects are cognitive objects, and cognitive objects are described by natural language — hence the parallels between object specifier formats and natural language. Further, the parsing engine inside the OSL operates like a high school sophomore parsing sentences at the chalkboard. But I digress . . .
  955. To continue, the OSL asks the null object to give it a token for the image called “Girl with Hat.” (Tokens are the Coin 
  956.     of the Realm to the OSL.) So the null object looks through its images to find the one named “Girl with Hat” and returns a token to it. 
  957. The OSL then turns around and asks the image called “Girl with Hat” to give it a token for the first scan line. After getting this token, the OSL has no further use for the image token, so it’s returned to the application for disposal. In effect, this says, “Uh, hey guys, I’m done with this token. If you want to do anything like free memory or something, you can do it now.” Notice how polite the OSL is.
  958. Next, the OSL asks the scan line for a token representing the third pixel, which the line handily returns. Now it’s the scan line token’s turn to be returned to the application for recycling. The OSL has no further use for the scan line token, so the application can get rid of it if necessary.
  959. Finally, having retrieved the token for the third pixel of the first line of the image called “Girl with Hat,” the OSL returns the token with a “Thanks, and come again.” The application can then ask the object represented by the token to lighten itself (remember that was the original Apple event), and dispose of the token for the pixel.
  960. As you can see, the OSL operates by taking an unreasonable request, “give me the third pixel of the first line of the image called “Girl with Hat,” and breaks it into a number of perfectly reasonable requests. Thus, your application gets to take advantage of its innate knowledge of its objects and their simple relationships to answer questions about complex object relationships.    
  961. the OSL actually works.) The OSL implements a generic parsing engine, applying a few simple assumptions about the state of the application’s design to the problem. However, for all the power provided by the engine within the OSL, it lacks an object-oriented interface. Instead, it uses a paradigm like that provided by the Apple Event Manager, requiring the application to register a set of bottleneck routines to provide application-specific functionality. As with the Apple Event Manager, you must write
  962. Figure 1
  963. Resolving an Object Specifier
  964. routines that implement runtime dispatching to the individual objects your application creates instead of using the natural method-dispatching mechanisms found in your favorite object-oriented language, whatever it may be.
  965. The nicest thing about the OSL is that, like the Apple Event Manager itself, it applies itself quite well to being wrapped with a real object-oriented interface (although you have to write it yourself, sigh). Curiously, the OSL solves both problems — poor interface and cognitive versus object-oriented programming differences. With a nice object-oriented framework, you can write your code once, in the fashion to which you’re accustomed. I won’t lie to you by telling you the job becomes easy, but it does change from obscure and harrowing to straightforward and tedious.
  966. OBJECT MODEL CONCEPTS
  967. There are two basic concepts defined in the object model. One is containment, which means that every object can be retrieved from within some other object. In the language of the object model, every object is contained by another object. The only exception to this rule is the single object called the null object. The null object is commonly called the application object, and may or may not be contained by another object. In practice, a null object specifier is like a global variable defined by the object model. The application implicitly knows which object is meant by “null object.” Object resolution always begins by making some query of the null object.
  968. For example, with a simple image processor, it would be appropriate to state that pixels are contained by scan lines, scan lines by images, and images by windows. It’s also appropriate to have pixels contained by images and windows. Windows themselves have no natural container, however. Therefore, they must be contained by the null object. One way you can decide whether these relationships make sense for your product is to ask if a user could find it useful to do something to “the eighth pixel of the second scan line” or to “the twentieth pixel of the image.” If statements like these make sense, a containment relationship exists.
  969. The second basic concept of the object model is behavior. Behavior is quite simple; it means that objects must be able to respond to an Apple event. Behavior correlates directly with the traditional object programming concept of methods of a class. In fact, as you’ll see, the actual Apple event–handling method of Apple event objects is usually a switch statement that turns an Apple event into a dispatch to the C++ method that implements the Apple event’s functionality.
  970. Taken together, the concepts of containment and behavior define the limits for objects in the model of the Apple event world. The object model resembles the programming worlds of Smalltalk or LISP, where everything is an object. Everything. For those familiar with these paradigms where even integers, characters, and floating-point numbers are full first-citizen objects, the Apple event world will be a refreshing change from traditional programming in C++ and Pascal.
  971.  
  972. FINDING THE OBJECTS
  973. The overriding concept in designing object model support in your application is to do what makes sense for both you — as the developer — and the user. 
  974. 1.    It’s best to begin by deciding what objects exist in your application. To decide what objects exist, do some user testing and ask the users what objects they see and what objects they think of while using your application. If this isn’t possible, just pretend you’re a user and actually use your application, asking yourself those same questions. For example, if you ask users for a list of objects in an image processing application (and refrain from biasing them with computer mumbo jumbo) they’ll probably list such things as window, icon, image, pixel, area, scan line, color, resolution, and menu bar. (Figure 2 shows types of objects a user might list.) Guess what? In reality, those probably are object model classes that an image processing application could support when it supports the object model. Since the objects you’ll want to support are user-level kinds of entities, this makes perfect sense.
  975. Figure 2
  976. Objects the User Sees
  977. 2.    After deciding what objects exist in your application, run another series of user tests to determine the relationships between different objects. For example, what objects does a window contain? Menus? Pixels? Areas? Color? What objects does an area contain? Pixels? Scan lines? Windows? This is just as simple as it seems. Just ask the question, “Does this object contain that object?” If you get immediate laughter, move on. Positive answers or thoughtful looks indicate a possible relationship.
  978. 3.    Finally, determine what properties and behaviors each object class will have. These questions can be asked during the same user test as in step 2 because the answers users will give are closely related. Will you be able to ask windows for their names or pixels for their colors? How about asking windows to move or close? Can you ask pixels to change color or make a copy?
  979. You may have noticed that this approach falls into the category of Good Object Design. Undoubtedly, anyone who does object-oriented design has gone through a similar process when developing an application. Resist the temptation to design the application’s internal structure using G.O.D. and be done with it, because the object model design is different from the application design. When designing the application, you typically analyze structure from the perspective of eventually implementing the design. Thus, you impose design constraints to make implementation easier. For example, you probably don’t keep representations of images, areas, and pixels, but choose one model for your internal engine — a reasonable solution for a programmer looking at the problem space. A typical image processing program usually has real classes representing images, and probably has an area class, but may not have a pixel class or scan line class. Pixels and scan lines may be implemented by a more basic representation than classes — simple indices or pointers into a PixMap, for example.
  980. However, when you design object model support, you have a very different perspective. You’re designing classes based on user expectation and intention, not on programmer constraints. In object model design of an image processor, you do have TImage, TArea, TScanLine, and TPixel classes, regardless of your internal representation. This is because a user sees all these classes. The TImage and TArea may be the same as your internal engine’s TImage and TArea, and probably are. After all, there’s little reason to ignore a perfectly usable class that already exists. However, the TPixel and TScanLine classes exist only to provide object model support. I call classes that exist only to provide object model support ephemeral classes.
  981. Undeniably, the most useful tool for finding objects is user testing. Another important source of information is the Apple Event Registry. The Apple Event Registry describes Apple event classes that are standardized in the Apple event world. The Registry lists each class along with its inheritance, properties, and behaviors. It’s also the last word on the values used to code object model support. For example,
  982.  constants for predefined Boolean operators and class types are listed in detail. As you follow the process for finding the objects in your application, you can use the elements found in the Registry as a basis for your investigation and for later implementation. For example, if your user tests reveal that a pixel class is appropriate for your application and a Pixel class is documented in the Registry, you should probably use the behaviors and properties documented there as a basis for your application’s TPixel class. Doing so allows your application to work well with existing scripts that manipulate pixels and allows your users to have a consistent scripting experience across all pixel-using applications.
  983. OSL CONECPTS
  984. In addition to the principles imposed by the object model itself, the OSL makes a few reasonable assumptions about what applications provide to support their objects. Since the object model requires that objects be able to retrieve contained objects, the OSL allows an object to count the number of objects of a given type contained within them. So, if an image contains scan lines, the image object needs to be able to count the number of scan line objects contained within it. Of course, in some circumstances, the number of objects that are contained can’t be counted or is just plain big (try asking how many TSand objects are contained in a TBeach object). In this case, the OSL allows the object to indicate that the number can’t be counted.
  985. Additionally, the OSL allows applications to apply simple Boolean operators to two objects. The operators themselves are a part of the Apple Event Registry. They include the familiar operators like less than, equal to, and greater than as well as some more interesting relations like before, after, over, and under. The requirement for these operators is that they have Boolean results. This means that if object1 and object2 have operator applied to them, the expression object1 operator object2 is either true or false. Of course, there’s no requirement that every class implement every operator, only those that make sense. It makes little sense to ask if an object of type TColor is greater than another, but brighter than is another story.
  986. During resolution of an Apple event, the OSL asks for tokens of objects between the application object and the final target to be returned (as described earlier in this article in “A Sample OSL Resolution”). To a programmer, they look like AEDescs being passed around, but the OSL treats them specially: 
  987. •    The OSL guarantees that it will never ever look in the data portion of the token, the dataHandle field of the AEDesc. It may peek at the descriptorType field from time to time, but the data itself is golden. This becomes a critical point when applying the OSL engine to an object-oriented interface. The token data of Apple event objects should be “real” object references in whatever programming language is appropriate, and keeping the data completely private to the application makes this possible. 
  988.  
  989. •    The application must be able to recognize the token when it appears again. Thus, if the application returns a token for the image “Girl with Hat” to the OSL, the application must be able to recognize the significance of having that token passed back by the OSL. 
  990. •    The OSL asks only that we guarantee the validity of a token during the resolution of the current object specifier. 
  991. Since the data contained in the AEDescs is private, the OSL must provide a system for the application to know when a token is being created and when it’s being terminated. Creation of tokens is provided through the containment accessor protocol. Termination is provided by a callback routine which does the actual token disposal and which the application registers with the OSL. This callback is invoked from AEDisposeToken and comes in handy when applying the object model to C++ classes. 
  992. There are also a number of features that are beyond the scope of this article. One of these is the OSL concept of marking objects. This means that objects are labeled as belonging to a particular group. The contract the OSL makes with the application is that the OSL will ask whenever it needs a new kind of mark, and the application will recognize whether any object is marked with a particular mark. Further, given the mark itself, the application will be able to produce all the objects with that mark. If this sounds particularly confusing, just consider mark objects as typical list objects. Given a list and an object, it’s quite natural to answer the question, “Is this object in this list?” Further, it’s quite natural to answer the question, “What are all the objects contained in this list?” 
  993. The framework for adding Apple event support described later in the section “Inside UAppleObject” satisfies the basic OSL requests for counting objects, applying Boolean operators, and handling tokens. However, it doesn’t handle marks. The intrepid reader could add support for this feature with a little thought.
  994. CLASS DESIGN
  995. To incorporate object model support into your applications, you need a class library that implements the object model classes you want to support — for example, the TWindow, TImage, TArea, and TPixel classes described earlier. These classes exist because they represent Apple event objects the application will support. Then you create a mapping of Apple event objects to the C++ classes that implement them (see Figure 3). For the sake of argument, say that TWindow, TArea, and TImage are also part of the class library used to implement the non–object-model portions of the program. The TPixel class is an ephemeral class. What these four classes have in common is a mixin class, MAppleObject, that provides the hooks for adding object model functionality (see the next section, “Inside UAppleObject,” for more details).
  996. Figure 3
  997. The Objects As Implemented
  998. MAppleObject must include protocol that implements the object model and OSL concepts. Given an MAppleObject, there should be protocol for returning an object contained within MAppleObject. This accessor method is expected to return an object that satisfies the containment request. It also needs to inform the framework if the returned object is an ephemeral object — some might say that such an object is lazy evaluated into existence. As a practical matter, this informs the framework whether an object needs to be deleted when the OSL disposes of the object’s token (as described in “A Sample OSL Resolution”). Obviously, it would be undesirable to have the framework delete the TImages because the application depends on them for its internal representation. It would be equally stomach-turning to have all the TPixels pile up in the heap, never to be deleted.
  999. Since TPixel objects don’t actually exist until they’re lazy evaluated into existence, you’re free to design their implementation in a wide variety of ways. Remember that one of the contracts the OSL makes with the application is that tokens need to be valid only during the resolution of the current object specifier. Well, consider that the implementation of images is just a handle of gray values. Normally, if someone suggested that a pixel be implemented as an index into a block of data, you’d throw temper tantrums. “What!” you’d yell, “What if the pixel is moved in the image! Now the index is stale.” This is not an issue for tokens, because they’re transient. Since pixels won’t be added during the resolution of an object specifier, such a 
  1000. representation is fine. Of course, if you’d prefer a more robust implementation, that’s fine, too, but remember that the OSL doesn’t impose such robustness on you.
  1001. MAppleObject must also include a protocol to implement the comparison operators, counting protocol, and behavior dispatching. As a practical matter, these methods will likely be large switch statements that call other, more meaningful, methods depending on the details of the request. For example, the counting protocol might key on the kind of objects that should be counted and invoke methods specialized to count contained objects of a specific class.
  1002. Finally, each class provides protocol for telling clients which object model class the object represents. This is necessary for the framework to be able to communicate with the OSL. During the resolution conversation the OSL holds with the framework, the framework returns descriptors of each object the OSL asks for. These descriptors are required to publish to the OSL the type of the object returned from the request.
  1003. INSIDE UAPPLEOBJECT
  1004. UAppleObject is a framework whose main contribution is the class MAppleObject. MAppleObject provides the basis for integrating Apple event objects and Apple event object support into object-oriented applications. UAppleObject also includes a dispatcher, TAppleObjectDispatcher, and the 'aedt' resource. You drop the UAppleObject files into your application and immediately begin subclassing to provide Apple event functionality.
  1005. EXCEPTION HANDLING IN UAPPLEOBJECT
  1006. Developers familiar with the details of Apple event implementation are no doubt aware that the Apple Event Manager deals exclusively with error code return values, as does the rest of the Toolbox. When the Apple Event Manager invokes a developer-supplied callback routine, that routine commonly returns an integer error code. This style of error handling is found nowhere in UAppleObject. Instead, UAppleObject uses the UMAFailure unit to provide exception handling. UMAFailure is a unit available on the Developer CD Series disc that provides both a MacApp-style exception-handling mechanism for non-MacApp programs and excellent documentation for its use.
  1007. Wherever UAppleObject is invoked through a callback routine that expects an error code to be returned, all exceptions are caught and the exception’s error code is returned to the Toolbox. Therefore, when an error occurs, call the appropriate FailXXX routine provided by UMAFailure — for example FailMemError, FailNIL, or FailOSErr. In the UAppleObject documentation, calling one of these routines is referred to as throwing an exception.
  1008. MAPPLEOBJECT
  1009. The major workhorse of UAppleObject is MAppleObject, an implementation of the basic Apple event object functionality. MAppleObject is an abstract mixin class that provides the protocol necessary for the UAppleObject framework to resolve Apple event objects and handle Apple events.
  1010. class MAppleObject
  1011. {
  1012. public:
  1013.                 MAppleObject();
  1014.                 MAppleObject(const MAppleObject& copy);
  1015.     virtual ~MAppleObject();
  1016.  
  1017.     MAppleObject& operator=(const MAppleObject& assignment);
  1018.  
  1019.     virtual DescType GetAppleClass() const = 0;
  1020.  
  1021.     virtual long CountContainedObjects(DescType ofType);
  1022.     virtual MAppleObject* GetContainedObject(DescType desiredType,
  1023.         DescType keyForm, const AEDesc& keyData, Boolean& needDisposal);
  1024.     virtual Boolean CompareAppleObjects(DescType compareOperator, 
  1025.         const MAppleObject& toWhat);
  1026.     virtual void DoAppleEvent(const AppleEvent& message, 
  1027.         AppleEvent& reply, long refCon);
  1028.  
  1029.     static void SetDefaultAppleObject(MAppleObject* defaultObject);
  1030.     static MAppleObject* GetDefaultAppleObject();
  1031.  
  1032.     static void GotRequiredParameters(const AppleEvent& theAppleEvent);
  1033.  
  1034.     static void InitAppleObject(TAppleObjectDispatcher* dispatcher = nil);
  1035. };
  1036. GetAppleClass 
  1037. DescType GetAppleClass() const = 0;
  1038. GetAppleClass is an abstract method that returns the object model type of an object. Every MAppleObject subclass should override this method to return the object model type specific to the individual object.
  1039. CountContainedObjects 
  1040. long CountContainedObjects(DescType ofType);
  1041. CountContainedObjects should return the number of objects of the indicated type that are contained within the receiver object. This is usually done by counting thenumber of objects your subclass knows how to access and adding it to the number 
  1042. of objects the parent class finds (in other words, call the inherited version and add it to the number you find yourself). If the number of objects is too large to be enumerated in a signed 16-bit integer, CountContainedObjects may throw the errAEIndexTooLarge exception.
  1043. GetContainedObject 
  1044. MAppleObject* GetContainedObject(DescType desiredType, DescType keyForm,
  1045.     const AEDesc& keyData, Boolean& needDisposal);
  1046. GetContainedObject is a generic method for obtaining an object contained by the receiver. Subclasses always override this method to provide access to the subclass’s contained objects. The desiredType, keyForm, and keyData arguments indicate the specific object to be returned as the function result. If the resulting object is one used in the framework of the application, GetContainedObject should return false in the needDisposal argument. 
  1047. The alternative is for GetContainedObject to create the resulting object specifically for this request; in this case, it returns true in the needDisposal argument. If needDisposal is true, the UAppleObject framework deletes the result object when it’s no longer needed.
  1048. CompareAppleObjects 
  1049. Boolean CompareAppleObjects(DescType compareOperator, 
  1050.     const MAppleObject& toWhat);
  1051. CompareAppleObjects performs the logical operation indicated by the arguments, returning the Boolean value of the operation. The semantics of the operation 
  1052. is this compareOperator toWhat. So, if the compareOperator parameter were kAEGreaterThan, the semantics of the method call would be this is greater than toWhat. Subclasses always override this method to provide the logical operations 
  1053. they support.
  1054. DoAppleEvent 
  1055. void DoAppleEvent(const AppleEvent& message, AppleEvent& reply,
  1056.     long refCon);
  1057. When an object is identified as the target of an Apple event, it’s sent the DoAppleEvent message. The message and reply Apple event records are passed 
  1058. in the corresponding arguments. If the direct parameter to the message is typeObjectSpecifier, the object specifier is guaranteed to resolve to the receiver; otherwise the receiver is the application object. Additional modifiers for the event can be extracted from the message, and the reply should be filled in by DoAppleEvent, if appropriate. The refCon parameter is the shortcut number registered with the UAppleObject framework (see the section “The 'aedt' Resource”). Subclasses always override DoAppleEvent to dispatch their supported Apple events to appropriate methods.
  1059. SetDefaultAppleObject and GetDefaultAppleObject 
  1060. void MAppleObject::SetDefaultAppleObject(MAppleObject* defaultObject);
  1061. MAppleObject* MAppleObject::GetDefaultAppleObject();
  1062. GetDefaultAppleObject returns the MAppleObject currently registered as the null container. Similarly, SetDefaultAppleObject registers a particular object as the null container. Usually, the object serving as null container doesn’t change during the lifetime of the application — it’s always the application object. In this case, just call SetDefaultAppleObject from within your application object’s constructor. But remember that any Apple event that arrives when no null container is registered falls on the floor and is returned to the Apple Event Manager with the errAEEventNotHandled error.
  1063. GotRequiredParameters 
  1064. void MAppleObject::GotRequiredParameters(const AppleEvent&
  1065.     theAppleEvent);
  1066. GotRequiredParameters is here for convenience. To do Apple event processing “right,” each Apple event handler should check that it has received everything the sender sent. Almost every good Apple event sample has this routine and calls it from within the handlers. Since all handling is done from within an MAppleObject method, it makes sense for this protocol to be a member function of MAppleObject. However, the member function really doesn’t need access to the object itself, and could actually be called from anywhere, so it’s a static member function.
  1067. InitAppleObject 
  1068. void MAppleObject::InitAppleObject(TAppleObjectDispatcher* dispatcher = 
  1069.     nil);
  1070. InitAppleObject must be called once after the application initializes the Toolbox and before it enters an event loop (specifically, before WaitNextEvent gets called). This method installs the given object dispatcher, or creates a TAppleObjectDispatcher if nil is passed.
  1071. TAPPLEOBJECTDISPATCHER 
  1072. The second element of UAppleObject is TAppleObjectDispatcher. Together with MAppleObject, TAppleObjectDispatcher forms a complete model of Apple events, the objects themselves, and the Apple event engine that drives the object protocol. TAppleObjectDispatcher is responsible for intercepting Apple events and directing them to the objects that should handle them. A core feature of this engine is the ability to resolve object specifiers into “real” objects.
  1073. class TAppleObjectDispatcher
  1074. {
  1075. public:
  1076.     TAppleObjectDispatcher();
  1077.     virtual ~TAppleObjectDispatcher();
  1078.  
  1079.     virtual void Install();
  1080.  
  1081.     virtual MAppleObject* ExtractObject(const AEDesc& descriptor);
  1082.     virtual void StuffDescriptor(AEDesc& descriptor, MAppleObject* object);
  1083.  
  1084.     virtual void HandleAppleEvent(const AppleEvent& message,
  1085.         AppleEvent& reply, long refCon);
  1086.  
  1087.     virtual void AccessContainedObjects(DescType desiredClass,
  1088.         const AEDesc& container, DescType containerClass, DescType form,
  1089.         const AEDesc& selectionData, AEDesc& value, long refCon);
  1090.     virtual long CountObjects(const AEDesc& containerToken,
  1091.         DescType countObjectsOfType);
  1092.     virtual Boolean CompareObjects(DescType operation, const AEDesc& obj1,
  1093.         const AEDesc& obj2);
  1094.     virtual void DisposeToken(AEDesc& unneededToken);
  1095.  
  1096.     virtual MAppleObject* GetTarget(const AppleEvent& message);
  1097.  
  1098.     virtual void SetTokenObjectDisposal(MAppleObject* tokenObject, 
  1099.         Boolean needsDisposal);
  1100.     virtual Boolean GetTokenObjectDisposal(const MAppleObject*
  1101.         tokenObject);
  1102.  
  1103.     virtual MAppleObject* ResolveSpecifier(AEDesc& objectSpecifier);
  1104.  
  1105.     virtual void InstallAppleEventHandler(AEEventClass theClass,
  1106.         AEEventID theID, long refCon);
  1107.  
  1108.     static TAppleObjectDispatcher* GetDispatcher();
  1109. };
  1110. Install 
  1111. void Install();
  1112. Install is called when the dispatcher object is actually installed (at InitAppleEvent time). It’s responsible for reading the 'aedt' resources for the application and declaring the appropriate handlers to the Apple Event Manager as well as registering with the OSL. Overrides should call the inherited version of this member function 
  1113. to maintain proper functionality. This method may be overridden to provide functionality beyond that supplied by TAppleObjectDispatcher — to provide for mark tokens, for example, which are left as an exercise for the reader. (Don’cha just hate it when articles do this to you?) 
  1114. ExtractObject and StuffDescriptor 
  1115. MAppleObject* ExtractObject(const AEDesc& descriptor);
  1116. void StuffDescriptor(AEDesc& descriptor, MAppleObject* object);
  1117. One of the key abstractions provided by TAppleObjectDispatcher is the packaging of MAppleObjects into tokens for communication with the Apple Event Manager and OSL. ExtractObject and StuffDescriptor are the pair of routines that carry the responsibility for translation. ExtractObject returns the MAppleObject contained within the token descriptor, while StuffDescriptor provides the inverse function. These functions are extensively used internally, but are probably of little interest to clients. Subclasses that override one method should probably override the other as well.
  1118. HandleAppleEvent 
  1119. void HandleAppleEvent(const AppleEvent& message, AppleEvent& reply,
  1120.     long refCon);
  1121. HandleAppleEvent is called whenever the application receives an Apple event. All responsibility for distributing the Apple event to an object is held by this member function. HandleAppleEvent is rarely overridden.
  1122. AccessContainedObjects 
  1123. void AccessContainedObjects(DescType desiredClass,
  1124.     const AEDesc& container, DescType containerClass, DescType form,
  1125.     const AEDesc& selectionData, AEDesc& value, long refCon);
  1126. At times during the resolution of an object specifier, MAppleObjects are asked to return objects contained within them. AccessContainedObjects is called when the parsing engine makes that query (in other words, it’s the polymorphic counterpart of the OSL’s object accessor callback routine). The method is responsible for getting the MAppleObject container, making the appropriate inquiry, and returning the result, properly packed. AccessContainedObjects is rarely overridden.
  1127. CountObjects 
  1128. long CountObjects(const AEDesc& containerToken,
  1129.     DescType countObjectsOfType);
  1130. At times during the resolution of an object specifier, it may be helpful to find out how many of a particular object are contained within a token object. This method is called when the parsing engine makes that query (in other words, it’s the polymorphic counterpart of the OSL’s count objects callback routine). It’s responsible for finding 
  1131. the MAppleObject corresponding to the token, making the inquiry of the object, and returning the answer. 
  1132. CompareObjects 
  1133. Boolean CompareObjects(DescType operation, const AEDesc& obj1,
  1134.     const AEDesc& obj2);
  1135. At times during the resolution of an object specifier, it may be helpful to compare two objects to determine if some logic relationship (for example, less than, equal to, before, or after) holds between them. CompareObjects is responsible for making the inquiry of the appropriate MAppleObject and returning the result (in other words, it’s the polymorphic counterpart of the OSL’s compare objects callback routine). The semantics of the operation is obj1 operation obj2. So, if the compareOperator parameter were kAEGreaterThan, the semantics of the method call would be obj1 is greater than obj2. This method is rarely overridden.
  1136. DisposeToken 
  1137. void DisposeToken(AEDesc& unneededToken);
  1138. DisposeToken is called when the OSL determines that a token is no longer necessary. This commonly occurs during resolution of an object specifier. DisposeToken is responsible for acting appropriately (in other words, it’s the polymorphic counterpart of the OSL’s object disposal callback routine). For the implementation in TAppleObjectDispatcher, this means the routine checks to see if the object is marked as needing disposal, and deletes the object if necessary.
  1139. GetTarget 
  1140. MAppleObject* GetTarget(const AppleEvent& message);
  1141. GetTarget is responsible for looking at the Apple event and determining which 
  1142. object should receive it. Notably, GetTarget is used by HandleAppleEvent. The TAppleObjectDispatcher implementation sends the Apple event to the default object unless the direct parameter is an object specifier. If the direct parameter is an object specifier, it’s resolved to an MAppleObject, which is then sent the Apple event. This method is rarely overridden.
  1143. SetTokenObjectDisposal and GetTokenObjectDisposal 
  1144. void SetTokenObjectDisposal(MAppleObject* tokenObject,
  1145.     Boolean needsDisposal);
  1146. Boolean GetTokenObjectDisposal(const MAppleObject* tokenObject);
  1147. Any MAppleObject can be marked as needing disposal or not needing it. SetTokenObjectDisposal and GetTokenObjectDisposal manage the internal representation of the table that keeps track of such information. You may want to override them both (never do it one at a time) to provide your own representation.
  1148. ResolveSpecifier 
  1149. MAppleObject* ResolveSpecifier(AEDesc& objectSpecifier);
  1150. ResolveSpecifier returns the MAppleObject that corresponds to the object specifier passed as an argument. Under most circumstances, you don’t need to call this routine since it’s called automatically to convert the direct parameter of an Apple event into an MAppleObject. If, however, in the course of handling an Apple event, you find another parameter whose descriptorType is typeObjectSpecifier, you’ll probably want to resolve it through this routine. Remember that objects returned from ResolveSpecifier may need to be deleted when the application is done with them. To accomplish this, you may either stuff the object into an AEDesc by calling StuffDescriptor and then call AEDisposeToken, or ask whether the object needs to be deleted by calling GetTokenObjectDisposal and delete it if true is returned.
  1151. InstallAppleEventHandler 
  1152. void InstallAppleEventHandler(AEEventClass theClass, AEEventID theID,
  1153.     long refCon);
  1154. InstallAppleEventHandler is very rarely overridden. It’s responsible for registering an Apple event with the Apple Event Manager, notifying the manager that the application handles the Apple event. 
  1155. GetDispatcher 
  1156. TAppleObjectDispatcher* GetDispatcher();
  1157. This static member function returns the dispatcher object that’s currently installed. It’s useful for calling TAppleObjectDispatcher member functions from a global scope. 
  1158. THE 'AEDT' RESOURCE 
  1159. The last piece of the UAppleObject puzzle is the 'aedt' resource. The definition of this resource type is in the Types.r file distributed with MPW. Developers familiar with MacApp’s use of the 'aedt' resource already know how it works in UAppleObject because UAppleObject uses the same mechanism.
  1160. The 'aedt' resource is simply a list of entries describing the Apple events that an application handles. Each entry contains, in order, the event class, the event ID, and a numeric reference constant. The event class and ID describe the Apple event the application supports and the numeric constant is used internally by your application. The constant should be different for each supported Apple event. This allows your application to recognize the kind of Apple event at run time by looking at the refCon passed to DoAppleEvent. 
  1161. When installed via the Install method, a TAppleObjectDispatcher object looks at all 'aedt' resources in the application’s resource fork, registering all the Apple events in them. Thus, additional Apple event suites can be signified by adding resources 
  1162. instead of adding to one resource. For example, the Rez code to define an 'aedt' resource for the four required Apple events is as follows:
  1163. resource 'aedt' (100) {{
  1164.     'aevt', 'oapp', 1;
  1165.     'aevt', 'odoc', 2;
  1166.     'aevt', 'pdoc', 3;
  1167.     'aevt', 'quit', 4;
  1168. }};
  1169. When the Open Document Apple event ('aevt', 'odoc') is sent to the application, the refCon value to DoAppleEvent is 2. Since you’ve assigned a unique numeric constant to each different Apple event, a refCon value of 2 can be passed to DoAppleEvent only when the Apple event is Open Document.
  1170. To add the mythical foobar Apple event ('foo ', 'bar ') to the application, mapped to number 5, you may either add a line to the resource described above or add another resource: 
  1171. resource 'aedt' (101) {{
  1172.     'foo ', 'bar ', 5;
  1173. }};
  1174. EXTENDING CPLUSTESAMPLE 
  1175. So far this sounds all well and good. The theory behind adding Apple event object support holds together well on paper. The framework, UAppleObject, has been written and works. The only thing left is to put my money where my mouth is and actually use UAppleObject to demonstrate the addition of Apple events to an Apple event–unaware application. The subject of this foray into the Twilight Zone is CPlusTESample in the Sample Code folder on the Developer CD Series disc. TESample serves as the basis for adding scripting support for object model classes.
  1176. CPlusTESample is attractive for a number of reasons. First, it’s a simple application that could support some nontrivial Apple events. Second, it’s written in an object-oriented style and contains a decent design from the standpoint of separating the user interface from the engine and internal representation. Finally, it’s written in C++, a necessary evil for the use of UAppleObject.
  1177. To prove that CPlusTESample actually had the necessary flexibility to add Apple events, I began by adding font, font size, and style menus to the original sample. Adding these features required little modification to the original framework aside from the addition of methods to existing classes. Thus, I was satisfied that the underlying assumptions and framework could hold the paradigm shift of adding Apple event support.
  1178.  
  1179. In identifying the objects of the program, I chose windows and text blocks as the central object classes. If I were more gutsy, I would have attempted to actually define words and characters. However, the ancient programmer’s credo crept in — it was more work than I was willing to do for this example. Further complicating this decision was the fact that CPlusTESample is built on TextEdit. Therefore, the obvious concepts of paragraphs and words translated exceptionally poorly into the internal representation, TEHandles. Characters would have been simpler than either paragraphs or words, but I copped out and left it as an exercise for the reader.
  1180. The relationships between classes are very straightforward. Windows are contained by the null object and text blocks are contained by windows. However, since I had a concept of window, it became interesting to define various attributes contained in windows: name, bounding box, and position. So, object model classes were defined for names, bounding boxes, and positions.
  1181. Behaviors were similarly straightforward. Text blocks, names, bounding boxes, and positions had protocol for getting their data and setting their data. Thus, an Apple event could change a name or text block or could ask for a position or bounding box.
  1182. In the end, six classes were defined to implement the object model classes: TESample, TEDocument, TWindowName, TWindowBounds, TWindowPosition, and TEditText. TESample is the application class and functions as the null object. TEDocument implements the window class and is used as the internal representation of the document and all its data. The remaining four classes are ephemeral classes that refer to a specific TEDocument instance and represent the indicated feature of that instance.
  1183. From that point, it was straightforward to write methods overriding MAppleObject to provide the containment, counting, comparison, and behavior dispatching. You can check out CPlusTESample with Apple event support added on the Developer CD Series disc. 
  1184. IMPLEMENTING A CLASS 
  1185. This section shows how UAppleObject helps you write cleaner code by looking at one of the CPlusTESample classes in detail — TEditText, the text class. User testing revealed the need for a class to represent the text found inside a CPlusTESample window, so I created a TEditText class whose objects are contained within some window class. Additionally, users wanted to retrieve and set the text represented by the text class. The Apple Event Registry defines a text class that roughly resembles the text class I wanted to provide in my CPlusTESample extension. Therefore, I decided to use the Registry’s description as a basis for my TEditText class.
  1186. TEditText provides object model support for the user’s concept of text, indicating that it should inherit from MAppleObject. TEditText objects don’t contain any other objects, so there’s no need to override the CountContainedObjects or GetContainedObject methods. However, TEditText objects do respond to Apple events. The Registry says that text objects should provide access to the text data itself through the Set Data and Get Data Apple events. Therefore, TEditText should include methods to implement each Apple event and should override DoAppleEvent to dispatch an Apple event to the appropriate method. After taking all this into account, here’s what TEditText looks like:
  1187. class TEditText : public MAppleObject
  1188. {
  1189. public:
  1190.     TEditText(TEHandle itsTE);
  1191.  
  1192.     virtual void DoAppleEvent(const AppleEvent& message,
  1193.         AppleEvent& reply, long refCon);
  1194.     virtual DescType GetAppleClass() const;
  1195.  
  1196.     virtual void DoAppleGetData(const AppleEvent& message,
  1197.         AppleEvent& reply);
  1198.     virtual void DoAppleSetData(const AppleEvent& message,
  1199.         AppleEvent& reply);
  1200. private:
  1201.     TEHandle    fTEHandle;
  1202. };
  1203. The constructor is relatively simple to implement. Since CPlusTESample uses TextEdit records internally, it’s natural to implement TEditText in terms of TextEdit’s TEHandle data structure. Therefore, TEditText keeps the TEHandle to which it refers in the fTEHandle instance variable.
  1204. TEditText::TEditText(TEHandle itsTE)
  1205. {
  1206.     fTEHandle = itsTE;
  1207. }
  1208. UAppleObject requires each MAppleObject instance to describe its object model class type through the GetAppleClass method. Since all TEditText objects represent the Registry class denoted by typeText, TEditText’s GetAppleClass method is exceptionally straightforward, blindly returning the typeText constant.
  1209. DescType TEditText::GetAppleClass() const
  1210. {
  1211.     return typeText;
  1212. }
  1213. DoAppleEvent is also straightforward. It looks at the refCon parameter to determine which Apple event–handling method should be invoked. This method represents a large part of the remaining tedium for Apple event coding. Each class is responsible for translating the integer-based Apple event specifier, refCon in this example, into a polymorphic method dispatch such as the invocation of DoAppleSetData or DoAppleGetData. The nice part of this implementation is that subclasses of TEditText won’t need to implement DoAppleEvent again if all the subclass needed was the Set Data or Get Data protocol. Instead such a subclass would simply override the DoAppleSetData or DoAppleGetData method and let the C++ method-dispatching mechanisms do the work.
  1214. void TEditText::DoAppleEvent(const AppleEvent& message,
  1215.     AppleEvent& reply, long refCon)
  1216. {
  1217.     switch (refCon)
  1218.     {
  1219.     case cSetData:
  1220.         this->DoAppleSetData(message, reply);
  1221.         break;
  1222.     case cGetData:
  1223.         this->DoAppleGetData(message, reply);
  1224.         break;
  1225.     default:
  1226.         MAppleObject::DoAppleEvent(message, reply, refCon);
  1227.         break;
  1228.     }
  1229. }
  1230. DoAppleGetData and DoAppleSetData are the Apple event–handling methods of the TEditText class. To developers familiar with the traditional Apple Event Manager interfaces, these methods are the UAppleObject equivalents of what the Apple Event Manager calls Apple event handlers. Each method follows a general pattern common to most remote procedure call protocols, of which Apple events are an advanced form.
  1231. First, the Apple event–handling method reads additional information from the message Apple event. The DoAppleGetData method doesn’t happen to need any additional information because the entire meaning of the message is found in the identity of the Apple event itself. However, DoAppleSetData needs one additional piece of information — the text that should be stuffed into the object.
  1232. Next, the handler method calls GotRequiredParameters, passing the message Apple event as the sole argument. GotRequiredParameters ensures that the handler has retrieved all the information that the Apple event sender has sent. (For a discussion of why this is necessary, see Inside Macintosh Volume VI, Chapter 6.)
  1233. Third, the handler method will do whatever is necessary to perform the Apple event and create necessary reply data. The Get Data Apple event requires the TEditText object to fill the reply Apple event with the text it represents. Therefore, the DoAppleGetData method should retrieve the text contained in the TEHandle and pack it into an appropriate Apple event descriptor, putting that descriptor into the reply Apple event. In contrast to Get Data, the Set Data Apple event requires no reply, but does require that the text represented by the TEditText object be changed to reflect the text contained by the message Apple event. Thus, the DoAppleSetData method should contain code that sets the text contained in the object’s TEHandle to the text retrieved from the message Apple event. 
  1234. void TEditText::DoAppleGetData(const AppleEvent& message,
  1235.         AppleEvent& reply)
  1236. {
  1237.     // Note: This method uses no additional parameters.
  1238.  
  1239.     // Make sure we have all the required parameters.
  1240.     GotRequiredParameters(message);
  1241.  
  1242.     // Pack the text from the TEHandle into a descriptor.
  1243.     CharsHandle    theText = TEGetText(fTEHandle);
  1244.     AEDesc        textDesc;
  1245.     HLock((Handle) theText);
  1246.     OSErr theErr = AECreateDesc(typeText, (Ptr) *theText,
  1247.         GetHandleSize((Handle) theText), &textDesc);
  1248.  
  1249.     // Unlock the handle and check the error code, throwing an
  1250.     // exception if necessary.
  1251.     HUnlock((Handle) theText);
  1252.     FailOSErr(theErr);
  1253.  
  1254.     // Package the reply.
  1255.     theErr = AEPutParamDesc(&reply, keyDirectObject, &textDesc);
  1256.  
  1257.     // Dispose of the descriptor we created and check the reply from
  1258.     // packaging the reply, throwing an exception if necessary.
  1259.     OSErr ignoreErr = AEDisposeDesc(&textDesc);
  1260.     FailOSErr(theErr);
  1261. }
  1262.  
  1263. void TEditText::DoAppleSetData(const AppleEvent& message,
  1264.     AppleEvent& /* reply */)
  1265. {
  1266.     // Get the text data descriptor from the message Apple event.
  1267.     AEDesc    textDesc;
  1268.  
  1269.     FailOSErr(AEGetParamDesc(&message, keyAETheData, typeText,
  1270.         &textDesc));
  1271.  
  1272.     // Make sure we have all the required parameters.
  1273.     GotRequiredParameters(message);
  1274.  
  1275.     // Use the data in the text descriptor to set the text of TEHandle.
  1276.     HLock(textDesc.dataHandle);
  1277.     TESetText(*textDesc.dataHandle, GetHandleSize(textDesc.dataHandle),
  1278.         fTEHandle);
  1279.     HUnlock(textDesc.dataHandle);
  1280.  
  1281.     // Dispose of the text descriptor we created above.
  1282.     OSErr    ignoreErr = AEDisposeDesc(&textDesc);
  1283. }
  1284. IT'S UP TO YOU
  1285. This article set out to reveal the deep significance of Apple events and the object model and to find a strategy for developing an object-oriented framework to take advantage of the Apple event object model design. Along the way, it danced around cognitive theory and discussed how cognitive theory applies to user perception of software. You’ve seen how object programming resembles such cognitive models to a more-than-trivial degree. And you’ve seen how those similarities can be leveraged to give workable, programmable models of user concepts within Turbo WhizzyWorks II NT Pro.
  1286. You’ve also seen the difficulties presented by the Apple Event Manager interface. Although Apple event objects and the object model are unarguably tied to user models and user-centric models, the Apple Event Manager is not. The UAppleObject framework presented here works with the object model and the Apple Event Manager to reduce generic user scripting to a tedious but straightforward task. 
  1287. In the midst of all this detail, don’t forget the payoff — providing a mechanism for users to interact with your applications using a level of control and precision previously undreamed of. The rest, as they say, is in your hands. 
  1288. PRINT HINTS
  1289.     TOP 10 PRINTING MISDEMEANORS
  1290.     
  1291. PETE (“LUKE”) ALEXANDERIn my last column (in develop Issue 10), I talked about the “Top 10 Printing Crimes” that would cause you and your application serious headaches during print time. Here I’ll list the “Top 10 Printing Misdemeanors.” A printing misdemeanor will cause minor to major printing problems on different devices. Usually, you’ll be able to get output onto a page, but it won’t necessarily be what you want or where you want it.
  1292. Here’s the list:
  1293.     10.  Using CopyMask and CopyDeepMask with the LaserWriter.
  1294.     9.     Using the obsolete spool-a-page, print-a-page method.
  1295.     8.     Not being very careful when using SetOrigin with the LaserWriter.
  1296.     7.     Creating pictures while the Printing Manager is open.
  1297.     6.     Not having all your data ready for the Printing Manager when you open it.
  1298.     5.     Making assumptions about the imageable area.
  1299.     4.     Using variables from Laser Prep (that is, md).
  1300.     3.     Checking wDev for the wrong reasons.
  1301.     2.     Accessing print record fields that are used internally.
  1302.         1.     Adding printing to your application four weeks before going final.
  1303. Most of these misdemeanors are easily avoided if you plan ahead. Let’s take a look at the problems and the solution to each one. 
  1304. SOLUTIONS TO THE MISDEMEANORS
  1305. 10.    Using CopyMask and CopyDeepMask with the LaserWriter. 
  1306. It’s not possible to directly print to a LaserWriter an image that was created with CopyMask or CopyDeepMask, because these calls aren’t saved in pictures and they don’t go through the stdBits QuickDraw bottleneck. The image’s data must be recorded in the picture or go through the stdBits bottleneck in order for the LaserWriter driver to be able to image the data on the printer.
  1307. Solution: You can create your image in an off-screen world using CopyMask and CopyDeepMask to your heart’s content. When you’re ready to print your image, CopyBits it directly to the LaserWriter’s grafPort using srcCopy.
  1308. 9.     Using the obsolete spool-a-page, print-a-page method. 
  1309. There are still a few applications using the spool-a-page, print-a-page method of printing a document. This approach is no longer required unless you’re printing from a Macintosh that doesn’t have a hard drive. Otherwise, it’s a bad idea; it has major drawbacks in the areas of speed and user happiness. 
  1310. The idea of this method was to print each page of a document as a separate job. This was required in the early Macintosh days because disk space was at a premium. It prevented a document from filling up the entire disk and never printing a page. But in this age of hard disks, it’s no longer needed.
  1311. Opening and closing the Printing Manager for each page could result in a serious speed penalty. And it     
  1312.  
  1313. could make your users very unhappy when printing to a shared printer; it’s possible to have another user grab the printer before you do, thereby intermixing your pages with theirs.
  1314. Solution: Don’t use the spool-a-page, print-a-page technique. Instead, use the method described in the Technical Note “A Printing Loop That Cares . . .”.
  1315. 8.    Not being very careful when using SetOrigin with the LaserWriter. If you’re using SetOrigin to change the coordinate system when sending direct PostScript™ code to the LaserWriter, you’ll run into trouble when printing in the foreground versus the background.
  1316. The PostScript LaserWriter drivers 4.0 through 5.2 handle SetOrigin differently when background printing is enabled. 
  1317. •    When background printing is disabled and the application calls SetOrigin, QuickDraw responds by adjusting the portRect of the printer driver’s grafPort. Since SetOrigin doesn’t cause any grafProcs to run (because no drawing occurs), the printer driver doesn’t see the effect of this call until the next QuickDraw call is made (for example, DrawString or LineTo). At this point, the driver notices the change in the portRect and updates its internal origin. From then on, all QuickDraw and PostScript graphics are localized to the new origin.
  1318. •    When background printing is enabled, QuickDraw is playing back a picture that was spooled earlier. When SetOrigin is encountered while DrawPicture is playing the picture, the grafPort’s portRect isn’t updated. Instead, QuickDraw keeps the current origin cached and offsets each graphic on the fly. Since the portRect wasn’t modified, the printer driver doesn’t see the SetOrigin call. Although all QuickDraw objects are still localized correctly (by QuickDraw), PostScript graphics don’t move to the new origin.
  1319. In LaserWriter drivers 6.0 and later, the call to SetOrigin is a problem only on the first page that’s 
  1320.     spooled. After the first page, the driver looks at the grafPort’s coordinates and then records the SetOrigin information correctly by inserting a picture comment into the spool file. This enables PrintMonitor to realize when the origin changes. Unfortunately, the driver never records the changes produced by a SetOrigin call when it’s in the stdBits QuickDraw bottleneck.
  1321. Solution: In general, using SetOrigin doesn’t buy you much, and it can get you in a lot of trouble. There are still a few printer drivers that don’t handle the call correctly. Avoid using SetOrigin if possible. 
  1322. If you use SetOrigin when sending direct PostScript code, use the techniques described in the Technical Note “Position-Independent PostScript” to ensure that all the PostScript code your application creates is position independent. To get the LaserWriter driver to realize as soon as possible that you’ve changed the coordinate system, you can send the following code:
  1323. PicComment (PostScriptBegin, 0, nil);
  1324. PicComment (PostScriptEnd, 0, nil);
  1325. This is a little weird, but it works because the two PicComment calls go through the stdBits QuickDraw bottleneck, which is where the driver checks and updates the coordinate system as required.
  1326. 7.    Creating pictures while the Printing Manager is open. 
  1327. Some applications use a picture to collect all their QuickDraw objects before sending them on to the printer. This approach is OK unless the Printing Manager has already been opened by a call to PrOpen. The most noticeable problems are memory use and floating picture comments.
  1328. The memory problem can be very evident if you’re printing to a printer driver that requires a lot of memory. Between your memory use and the printer driver’s, there might not be enough memory available to meet everyone’s appetite. Remember, there isn’t a magical amount of memory that will guarantee that your application will print successfully.    
  1329.  
  1330. The other significant problem you might encounter is floating picture comments. When this occurs, the picture comments sent by your application will be recorded out of order, which will usually cause your image to print its objects out of order. 
  1331. Solution: Read the Technical Note “Pictures and the Printing Manager” before you start to use pictures at print time. Better yet, don’t create a picture when the Printing Manager is open.
  1332. 6.     Not having all your data ready for the Printing Manager when you open it.
  1333. There aren’t too many things you can do to speed up printing, but having data ready for the Printing Manager when you open it is one of them. If you open the Printing Manager and then go off to collect data you want to print, your printing time could increase dramatically. You also run the risk of timing out the print job because you don’t send data to a networked printer fast enough or your print job takes too long to complete.
  1334. Solution: When you open the Printing Manager, have all your data collected and ready to send to the printer. Make sure the data is formatted for the current printer (see the next misdemeanor for additional details).
  1335. If your application needs to perform a lot of data collection or preparation (as would a database application), consider spooling all your information to disk as pictures. This is especially useful when you don’t know how long it will take to gather the data for a particular page. To use this approach, you would open up a file and write out each page as a picture (as the Printing Manager does), spool everything to disk, and then send the pictures to the printer driver. Printing will be really fast! But be sure not to commit misdemeanor 7 above, and note that this should not be the only way your application prints; since you may not have enough disk space, you should make it an option in a Preferences or Print dialog.
  1336. Having your data ready to go when you open the Printing Manager ensures that you’ll print as fast as    possible and avoid timeout problems. And it will make your application a friendly networked printer user, compared to grabbing the printer on the network and hogging it while your application collects data. 
  1337. 5.     Making assumptions about the imageable area. 
  1338. Some applications make assumptions about the imageable area (the page rectangle) at print time. This can cause some serious speed and clipping problems. If any part of your image (which may contain text, QuickDraw objects, bitmaps, or pixMaps) falls outside the page rectangle, the printer driver will need to clip it. This will slow down the printing process and you won’t get the output you want. The imageable area for each printer is slightly different; this is actually a good thing, since it allows the printer driver to take full advantage of the printer’s capabilities.
  1339. About half of the printing game is reformatting your image to work for the currently selected printer. This problem is most noticeable when you print to a film recorder an image that was set up for a LaserWriter. If you don’t reformat the image, you won’t get the results you want; because of the higher resolution of the film recorder (1500 versus 300 dpi), you’ll get a micro-image and you’ll waste film. Also, most film recorders print only in landscape orientation.
  1340. Solution: Since each printer has a slightly different imageable area, you should format your image to this area. Before sending your data to the printer, you should format it to rPage, the page rectangle for the current printer. rPage lives in the TPrInfo record within the print record. However, be careful; as mentioned in the previous misdemeanor, you should have all your data ready to send (including all formatting) before opening the Printing Manager. Open the Printing Manager, get the dimension for rPage, close the Printing Manager, format your data, open the Printing Manager again, and print. 
  1341. One approach for saving your data within your application to help you format it at print time is to specify the location of each object on the page as a percentage of distance (as opposed to pixels). For    
  1342.  
  1343. example, you could specify an object to be 10% from the top and left margins. You would then always be able to place the object in the correct position for all printers no matter what the resolution.
  1344. 4.     Using variables from Laser Prep (that is, md). Using operators from the LaserWriter driver’s dictionary md is a classic way of causing your application compatibility problems when a new LaserWriter driver is released. Some developers do this to achieve additional PostScript functionality at print time. The problem is that when Apple releases a new LaserWriter driver it usually changes a few of the operators in md. This will then break code that depends on md. It’s an even bigger problem if you save this information in pictures. When a new LaserWriter driver is released, none of these pictures created by your users will be able to be printed.
  1345. Solution: Don’t use any of the operators defined within md in your printing code. This has been around for a long time as a compatibility issue; take a look at the Technical Note “Using Laser Prep Routines” for the historical data. 
  1346. If you decide to jump off the cliff and use operators in md, you owe it to your users to check the existence of an operator before you use it. This piece of PostScript code will do the trick:
  1347. userdict /md known 
  1348. {
  1349.     md /bu known {myBU} if
  1350. } if
  1351. In this example, we’re checking for the existence of bu before we replace it with our newly defined operator, myBU. If the bu operator didn’t exist, we’d do the right thing (that is, we’d still be able to print).
  1352. 3.     Checking wDev for the wrong reasons.
  1353. The printer type (such as LaserWriter or StyleWriter) is stored as an unsigned char in the high byte of the print record’s wDev field (in the TPrStl record). Each    printer driver has a unique wDev, and there are now over 142 wDevs in the world. That’s quite a few printers available for your application to print to. 
  1354. If you’re checking wDev to see which type of printer you’re talking to, you could end up very disappointed. Relying on wDev to make decisions at print time makes your application completely device dependent. What do you do when you get a wDev you don’t know about? You have to make assumptions about the printer, and if you make a bad decision, you won’t get the output you expect. This isn’t fair to your users; they should be able to print to any printer that’s connected to the Macintosh. 
  1355. When we were developing the StyleWriter printer, we had some serious compatibility problems with a few of the major applications. They assumed that any device with a resolution greater than 300 dpi must be a PostScript printer. They sent only PostScript code to the StyleWriter, which didn’t work out too well, since of course the StyleWriter doesn’t understand PostScript. 
  1356. Solution: Don’t check wDev, with a couple of exceptions. One exception is that you should check wDev and the printer driver version if you need to work around a bug in the printer driver. This is the only method available to determine whether you’re dealing with a particular printer driver. Checking the driver version by calling PrDrvrVers is important, because when the bug is fixed, you can remove your fix and let the driver do the work. Another exception is that you can check wDev after you’ve created a valid print handle (by calling PrintDefault) to see if the user has changed the printer type (for example, a LaserWriter to a StyleWriter) via the Chooser. In any case, be sure that when you do check wDev, you check it as an unsigned char value.
  1357. 2.     Accessing print record fields that are used internally.
  1358. You may notice that this is similar to the number 2 printing crime in the Print Hints column in Issue 10. There I emphasized the crime of accessing private     
  1359. (“PT”) fields that you may come across when prowling around in the print record. Also likely to cause inconsistent results is the misdemeanor of accessing other fields in the print record that are used internally (or unused). To make this even clearer, I’ll tell you just what print record fields you can read and write.
  1360. The print record is chock full of information. It’s an application’s playground during printing. It’s also used by printer drivers to hold information about the current print job. Since each printer has slightly different needs, each one uses these fields differently. The public API documented in Inside Macintosh is the same, but the rest of the print record is free domain for the printer driver to use as it sees fit. 
  1361. Setting a field that the printer driver doesn’t expect you to touch can cause big problems for your application. This is one of the reasons why printer drivers have compatibility problems when they’re being developed, and why they take so long to create.
  1362. Solution: Don’t set any fields in the print record besides iLstPage, iFstPage, pIdleProc, pFileName, and iFileVol. If you do, you’re running a serious compatibility risk with new printer drivers and printers you don’t have access to during your test cycle. See the Technical Note “A Printing Loop That Cares . . .” for details about setting and using iLstPage and iFstPage, and the Technical Note “Me and My pIdle Proc (or how to let users know what’s going on during print time . . .)” for details about setting pIdleProc. 
  1363. Don’t read any fields in the print record besides the ones you can set and the fields rPage, rPaper, iCopies, iVRes, iHRes, bjDocLoop, and bFileVers. (You can also read the TPrStatus record returned by prPicFile.) 
  1364. 1.     Adding printing to your application four weeks before going final.
  1365. This too is similar to a printing crime in Print Hints in Issue 10 — but there has been a change, to four weeks instead of two. I can’t emphasize this enough. Since my    last column, a couple of developers have come to us with major printing problems and a shipping deadline only a few weeks away. They had just started to add printing to their applications.
  1366. Solution: Designing printing at the beginning — not the end! — of your application’s development cycle is the solution to most of your printing headaches. Printing performance can make or break an application. You should convince the right people in your organization that printing is just as important as any other feature. There are a few pitfalls in the current printing architecture, but most of these problems can be avoided without a lot of work — if you design printing into your application from the start. 
  1367. So please, stay out of trouble and avoid the printing crimes and misdemeanors. You’ll be a happy printing developer and your users will also be delighted.
  1368.     REFERENCES
  1369.     •    Inside Macintosh Volume II (Addison-Wesley, 1985),
  1370.     Chapter 5, “The Printing Manager,” pages 150–151.
  1371.     •    “Print Hints: Top 10 Printing Crimes” by Pete (“Luke”)
  1372.     Alexander, develop Issue 10.
  1373.     •    “Print Hints From Luke & Zz: CopyMask,
  1374.     CopyDeepMask, and LaserWriter Driver 7.0” by Pete
  1375.     (“Luke”) Alexander, develop Issue 8.
  1376.     •    Macintosh Technical Notes “The Effect of 
  1377.     Spool-a-page/Print-a-page on Shared Printers”
  1378.     (formerly #125), “Using Laser Prep Routines” (formerly
  1379.     #152), “A Printing Loop That Cares . . .” (formerly
  1380.     #161), “Position-Independent PostScript” (formerly
  1381.     #183), “Me and My pIdle Proc (or how to let users know
  1382.     what’s going on during print time . . .)” (formerly
  1383.     #294), and “Pictures and the Printing Manager”
  1384.     (formerly #297). 
  1385.     
  1386.  
  1387. ANOTHER TAKE ON GLOBALS IN STANDALONE CODE
  1388. KEITH ROLLIN
  1389. While MPW is great for developing applications, it provides little support for creating standalone code resources such as XCMDs, drivers, and custom window, control, and menu definition procedures, especially if you have nonstandard needs. Two roadblocks developers immediately notice are the inability to create more than 32K of object code and the lack of access to global variables. This article addresses the latter issue. 
  1390. The Macintosh Technical Note “Stand-Alone Code, ad nauseam” (formerly #256) does an admirable job of explaining what standalone code is and discussing the issues involved in accessing global variables from within it. I’ll describe the solution proposed in that Tech Note later in this article, but you may also want to look over the Note before reading further. 
  1391. It’s important to realize that the Tech Note discusses just one possible solution to the problem of using global variables in standalone code. This article presents another solution, in the form of the StART package included on the Developer CD Series disc. Along the way, I’ll talk a bit about what the issues are, describe how users of Symantec’s THINK environments address the problem, recap the solution presented in the Tech Note, and show how to use MPW to implement a THINK-style solution. I’ll also take a look at the advantages and disadvantages of each approach, allowing you to choose the right solution for your needs. 
  1392. Note that the StART package is a solution for MPW users and that it assumes a lot about how MPW currently works. It’s possible that you may not be able to use the StART package to develop standalone code that uses globals with future versions of MPW, although code already created with StART will, of course, continue to work.
  1393. WHAT IS STANDALONE CODE?
  1394. Standalone code is merely executable code that receives little to no runtime support from the Macintosh Operating System. The advantage of standalone code resources 
  1395. is that they can be quickly loaded into memory, executed, and dismissed without the overhead of setting up a full-fledged runtime environment for them. In addition, standalone code can execute without affecting the currently running application or relying on it for any services. This makes such resources ideal for easily extending the system’s or your application’s functionality. By creating the right kinds of standalone code resources, you can change how controls or windows appear, or you can dynamically extend the capabilities of your application. 
  1396. Table 1 shows a list of the most common system- and application-defined standalone code resources.
  1397. Table 1
  1398. Kinds of Standalone Code Resources
  1399. Resource Type    Resource Function
  1400.     *    ADBS    ADB device driver
  1401.     *    adev    AppleTalk link access protocol
  1402.         boot    Boot blocks
  1403.         CACH    System RAM cache code
  1404.     *    CDEF    Custom control definition
  1405.     *    cdev    Control panel device
  1406.     *    dcmd    Debugger extension
  1407.         dcmp    Resource decompressor
  1408.     *    DRVR    Device driver
  1409.     *    FKEY    Function key
  1410.         FMTR    3.5-inch disk formatting
  1411.     *    INIT    System extension
  1412.         itl2    Localized sorting routines
  1413.         itl4    Localized time/date routines
  1414.     *    LDEF    Custom list display definition
  1415.     *    MBDF    Custom menu bar definition
  1416.     *    MDEF    Custom menu definition
  1417.     *    mntr    Monitors control panel extension
  1418.         PACK    System package
  1419.     *    PDEF    Printer driver
  1420.         PTCH    System patches
  1421.         ptch    System patches
  1422.     *    rdev    Chooser device
  1423.         ROvr    ROM resource override
  1424.     *    RSSC    Resource editor for ResEdit
  1425.         SERD    Serial driver
  1426.     *    snth    Sound Manager synthesizer
  1427.     *    WDEF    Custom window definition
  1428.     *    XCMD    HyperCard external command
  1429.     *    XFCN    HyperCard external function
  1430. Note: Items marked with an asterisk are ones that you might create for your own application, extension, driver, or whatever. The rest are reserved for the system.
  1431. Standalone code differs from the executable code that makes up an application, which has a rich environment set up for it by the Segment Loader. Let’s take a look at an application’s runtime environment so that we can better understand the limitations we must overcome to implement standalone code. 
  1432. An application runs in a section of memory referred to as its partition. Figure 1 shows the layout of an application partition. A partition consists of three major sections. At the top of the partition is the application’s A5 world, consisting of the application’s global variables, the jump table used for intersegment function calls, and 32 bytes of application parameters (see “Application Parameters”). This area of memory is called the A5 world because the microprocessor’s A5 register points into this data and is used for all access to it. Immediately below the A5 world is the stack, the area of memory used to contain local variables and return addresses. The stack grows downward toward the heap, which occupies the rest of the partition. The heap is used for all dynamic memory allocation, such as blocks created by NewHandle and NewPtr. Everything we see in Figure 1 — the heap (with a valid zone header and trailer), the stack, and the filled-out global variables and initialized jump table — is created by the Segment Loader when an application is launched.
  1433. Figure 1
  1434. An Application Partition
  1435. This is the application’s domain, and none shall trespass against it. And therein lies the conflict between applications and standalone code: Executing code needs to use the A5 register to access its global variables, but an application’s use of A5 prevents any standalone code from using it with impunity. Additionally, the A5 world is created by the Segment Loader when an application is launched. Since standalone code is not “launched” (instead, it’s usually just loaded into memory and JSRed to), it doesn’t get an A5 world, even if A5 were available. We must solve these two problems 
  1436. APPLICATION PARAMETERS 
  1437. Not much is known about the mysterious 32 bytes directly above A5 known as application parameters. Figures 9 and 10 on pages 19 and 21 of Inside Macintosh Volume II indicate their existence, but the description simply says that “they’re reserved for use by the system.” We know that the first four bytes contain a pointer into the QuickDraw globals, but that’s about it. Some MPW glue routines use some of the other bytes, but that use is undocumented. In any case, the application parameters seem pretty important. As you’ll see later, we make sure our standalone code resources support them. 
  1438. — the contention for A5 and the need to set up some sort of global variable space — in order to use globals in standalone code.
  1439. THE THINK SOLUTION 
  1440. For years, users of THINK C and THINK Pascal have been able to use global variables in their CDEFs, LDEFs, drivers, and other types of standalone code. THINK has solved the problem of A5 contention by compiling standalone code to use the A4 register for accessing globals, leaving A5 untouched. Their solution to the need to set up global variable space is simply to attach the globals to the end of the standalone code, again leaving the application’s A5 world untouched. 
  1441. Figure 2 shows how standalone code created by a THINK compiler looks, both on disk and in memory. If the code was created with the C compiler, which allows preinitialized global variables, the global variable section contains the initial values. If the code was generated by the Pascal compiler, which sets all global variables to zero, the entire global section simply consists of a bunch of zeros (kind of like some guys I used to know in high school).
  1442. This is in contrast to the way globals are stored on disk for applications. MPW, for instance, uses a compressed data format to represent an application’s globals on disk. When the application is launched, a small bit of initialization code is executed to read the globals from disk, expand them, and write them into the application global variable space in its A5 world.
  1443. Standalone code created by a THINK compiler accesses global variables by using 
  1444. A4-relative instructions. Because the use of the A4 register is ungoverned, such standalone code must manually set up A4 so that it can be used to reference its global variables. This setup is done by some macros provided by the THINK headers: RememberA0 and SetupA4. (It’s called RememberA0, and not RememberA4, because the macro has to store the value in the A0 register temporarily.) When the standalone 
  1445.  
  1446. Figure 2
  1447. Format of a Standalone Code Resource Created by a THINK Compiler
  1448. code is finished and is about to return to its caller, it must call RestoreA4 to restore the value that was in A4 before the standalone code was called. 
  1449. The solution provided by THINK offers many advantages: 
  1450. •    It’s simple to use. Making sure you surround the entry point of your standalone code with the appropriate macros is easy, and the macros don’t require any tricky parameters. Just type them in and you’re done. 
  1451. •    The THINK development systems automatically insert a little bit of magic code at the beginning of standalone code resources that make the setting up of A4 as transparent as possible. 
  1452. •    THINK’s use of A4 means that A5 is totally undisturbed, and hence A5 continues to point to a valid A5 world with, presumably, an initialized set of QuickDraw globals. This means that standalone code can make Toolbox calls without a second thought (or even much of a first thought, for that matter). 
  1453. •    Because the globals are attached to the standalone code, when 
  1454. the memory allocated to the standalone code resource is 
  1455. disposed of (for example, when the process that loaded it calls ReleaseResource on the segment), the globals are removed as well.
  1456. There are at least three disadvantages to THINK’s approach, however:
  1457. •    Since A4 is now pulling duty as the global variable reference base, fewer registers are available for calculating expressions, caching pointers, and so on. This means that the code generated is less efficient than if A5 were used for referencing globals.
  1458.  
  1459. •    The globals are stored on disk in an uncompressed format, a fact you should be aware of before cavalierly declaring those empty 20K arrays. 
  1460. •    The resources holding the standalone code must not be marked as purgeable, or the global variables will be set back to their original values when the resource is reloaded. 
  1461. A fourth disadvantage could be that the combined size of the executable code and the global variables must be less than 32K. However, this is somewhat ameliorated by THINK’s support of multisegmented standalone code. 
  1462. THE TECH NOTE SOLUTION 
  1463. Users of THINK development systems have their solution for accessing global variables in standalone code. MPW users, however, don’t have an immediately obvious solution. First, MPW’s compilers don’t have the option of specifying that A4 should be used to access global variables. Second, the MPW linker is written to create a compressed block of data representing the global variables and to place that block of data off in its own segment. Because A4 can’t be used to access globals, and because the globals aren’t attached to the end of the standalone code resource, MPW users don’t have the slick solution that THINK users do.
  1464. A possible alternative was presented to MPW users a couple of years ago with the publication of the Technical Note “Stand-Alone Code, ad nauseam.” Let’s take a quick look at that approach, and then compare it with THINK’s solution.
  1465. Let’s start by examining the format of a simple application, shown in Figure 3. This is the format that MPW is designed to create, with any deviance from the standard formula being cumbersome to handle.
  1466. This application has three segments. CODE 0 contains the information used by the Segment Loader to create the jump table, the upper part of an application’s A5 world. CODE 1 contains executable code, and usually contains the application’s entry point. CODE 2 contains the compressed data used to initialize the global variable section of the application’s A5 world, along with a little bit of executable code that does the actual decompressing. This decompression code is automatically called by some runtime setup routines linked in with the application. The purpose of the call to UnloadSeg(@_DataInit) in MPW programs is to unload the decompression code along with the compressed data that’s no longer needed. 
  1467. The solution proposed in the Tech Note is to use a linker option that combines segments 1 and 2. At the same time, the Note provides a couple of utility routines that create a buffer to hold the global variables and that decompress the variables into the buffer. Figure 4 shows what standalone code looks like when it’s running in memory.
  1468. Figure 3
  1469. Format of a Simple Application Created by MPW
  1470. Figure 4
  1471. Format of a Standalone Code Using the Tech Note Method
  1472. When the standalone code is called, it’s responsible for creating and initializing its own A5 world. It does this by calling OpenA5World, which is directly analogous to THINK’s SetupA4 macro. OpenA5World creates the buffer shown on the right in Figure 4, sets A5 to point to it, and calls the decompression routines to fill in the buffer. When the standalone code is ready to exit, it must call CloseA5World to deallocate the buffer and restore the original value of A5. 
  1473. Note that this approach has an immediate disadvantage compared to the THINK approach. Because the global variables buffer is deallocated when the code exits back to the caller, all values that were calculated and stored in global variables are lost. This makes the OpenA5World/CloseA5World solution good if you simply want to use global variables in lieu of passing parameters, but lousy if you’re trying to maintain any persistent data.
  1474. Fortunately, the Tech Note also presents a slight variation on the above solution that doesn’t require that the global variables buffer be deallocated when the standalone code exits. However, the solution requires a little help from the host application. When the standalone code exits, it has two problems to consider. The first is that it must find some way to maintain a reference (usually a handle) to the buffer holding the global variables. After all, where can the standalone code store this reference itself? It can’t store it in a global variable, because this reference will later be used to recover our global variables buffer. It can’t store the reference in a local variable, because local variables are destroyed once the function that declares them exits.
  1475. The second problem that must be solved when creating a solution that doesn’t require flushing the global variables is that of knowing when it actually is time to dispose of them. Globals accessed by THINK code resources are attached to the segments themselves, which means that they’re disposed of at the same time as the code resource itself. What happens if the caller of a standalone code resource created using the OpenA5World technique decides that it no longer needs that resource? If it simply calls ReleaseResource on the resource, the global variables used by the standalone code will be stranded in the heap. This is known as a memory leak, and it is very bad. The block of memory holding the global variables is no longer referenced by any code, and there’s no way to recover a reference to them. That block of memory will never be disposed of and will waste memory in the heap. 
  1476. The approach that the Tech Note takes to solving both of these problems is to require the help of the caller (usually the host application). First, the caller must agree to maintain the reference to the standalone code’s global variables buffer. After the buffer is created, the reference to it is passed back to the caller. The next time the standalone code is called, and all subsequent times, the caller passes that reference back to the standalone code, which then uses that reference to recover its global variables and reset A5 the way it likes it. Additionally, the caller must agree to notify the standalone code when it’s about to go away. When the standalone code receives that notification, it takes the opportunity to dispose of the global variables buffer.
  1477. Our brief recap of the Tech Note outlines a workable approach that provides a few advantages over the solution provided by THINK:
  1478. •    The on-disk representation of the standalone code is usually smaller, because the combination of the compressed data and decompression routines of MPW is often smaller than the raw data generated by THINK. 
  1479. •    Because the executable code and global variables are allocated in their own buffers, each of which can be 32K in length, you can create larger code resources and define more global variables. (This does not take into account the partial advantages provided by THINK’s multisegmented standalone code.) 
  1480. •    Because MPW doesn’t use it to access the globals, the A4 register can be used to generate more efficient object code. 
  1481. •    Since the globals are stored separately from the standalone code, the resource holding the standalone code can be marked as purgeable. 
  1482. •    The two blocks of memory holding standalone code and global variables can be locked or unlocked separately from each other, providing greater memory management flexibility.
  1483. There are, however, some disadvantages to the OpenA5World approach. The major disadvantage concerns the persistence of the global variables buffer. Either this buffer must be deallocated every time the code resource is exited, or the help of the caller must be elicited to maintain the reference to the buffer and to tell the standalone code when the buffer must be deallocated. If you’re not in a position to define the responsibilities of the caller (for instance, if you’re writing a WDEF), this disadvantage could be quite serious. 
  1484. The second disadvantage concerns the reuse of the A5 register. Once the standalone code changes A5 from pointing to the caller’s A5 world to pointing to the standalone code’s globals, A5 no longer points to a valid set of QuickDraw globals. This can easily be solved by calling InitGraf early in the standalone code, but some problems may still exist. For instance, what if the standalone code needed to draw something in the current port (as an LDEF would need to do)? The GrafPtr of the port to be used is back in the caller’s A5 world. Once we switch over to the standalone code’s A5 world, we no longer know what port to draw into. This problem is briefly alluded to in the Tech Note, but it’s not directly addressed. 
  1485. THE START SOLUTION 
  1486. It’s possible to combine the advantages of the two approaches we’ve seen so far, while at the same time eliminating some of the disadvantages. The idea behind the hybrid approach I’ll now present is to con MPW into creating a standalone code resource that has the same layout as one created by THINK. Specifically, instead of being stored in a separate buffer, the globals will be tacked onto the end of the code resource. This eliminates much of the reliance the standalone code has on the caller, and, as you’ll see later, still allows us to create 32K worth of object code and 32K of global data.
  1487. As we saw when discussing the Tech Note approach, we need to get MPW to take the stuff it normally puts in an application and convert it to a standalone code resource. The OpenA5World solution used a linker option to accomplish this. My solution uses a custom MPW tool instead.
  1488. Let’s begin by taking a look at what we’ll end up with, and then determine what it 
  1489. will take to get there. First, the standalone code will access its global variables by using the A5 register; there’s no way around that. Even if we were to pass the object code through a postcompilation tool that converted all A5 references into A4 references, there’s no way we could take care of the cases where the compiler generates code that uses A4 for other purposes. Therefore, this solution still uses A5 for accessing globals.
  1490. Second, the globals will be tacked onto the end of the standalone code resource, just as they are with THINK’s solution. This means that the globals will be in a known and easily determined location at all times, relieving us from having to rely on the caller to maintain our globals. When doing this, we inherit the problem THINK code has with not being purgeable, but that’s a small price to pay for the ease of use we get in return.
  1491. Third, the globals will be in expanded format. The approach taken in the Tech Note requires that our standalone code carry around the baggage of the decompression routines, as well as the compressed data, long after they’re no longer needed. Using pre-expanded data means a larger on-disk footprint, but again, this is a small price to pay, especially if the in-memory footprint is more of an issue (and it usually is).
  1492. Finally, we’ll need routines that calculate and set our A5 value when we enter our standalone code, and that restore A5 when we leave. These routines are analogous to the macros THINK uses and to the OpenA5World and CloseA5World routines of the Tech Note solution. Figure 5 shows how our standalone code resource will end up looking, both on disk and in memory.
  1493. My system is called StART, for StandAlone RunTime. It consists of two parts: an MPW tool called MakeStandAlone that converts a simple program like the one shown in Figure 3 into a standalone code resource, and a small library file with accompanying header files for Pascal and C. 
  1494. To show how these pieces work together, let’s take a small sample that uses a global variable, and build it using the StART tools. The sample we’ll use is the Persist.p  
  1495.  
  1496. Figure 5
  1497. Format of Standalone Code Using StART Techniques
  1498. program included in the Tech Note. Following is a version of the file, modified to make calls to the StART library. 
  1499. UNIT Persist;
  1500. { This is a standalone module that maintains a running total of the }
  1501. { squares of the parameters it receives.                            }
  1502.  
  1503. INTERFACE
  1504.     USES Types, StART;
  1505.     FUNCTION Main(parm: Longint): Longint;
  1506. IMPLEMENTATION
  1507.     { Define global storage to retain a running total over multiple }
  1508.     { calls to the module.                                          }
  1509.     VAR
  1510.         accumulation:        Longint;
  1511.     FUNCTION Main(parm: Longint): Longint;
  1512.         VAR
  1513.             saved:                SaveA5Rec;
  1514.         BEGIN
  1515.             UseGlobals(saved);
  1516.             accumulation := accumulation + (parm * parm);
  1517.             Main := accumulation;
  1518.             DoneWithGlobals(saved);
  1519.         END;
  1520. END.
  1521. This very simple sample performs the useless function of taking the number you pass it, squaring it, adding the result to a running total, and returning that total. UseGlobals is the StART routine that enables us to access our global variables (in this case, the lone variable named accumulation), returning the value of the caller’s A5. After we’ve performed our mathematical wizardry, we close up shop by calling a second StART routine, DoneWithGlobals, to restore the previous A5 value. 
  1522. Following is the makefile for Persist.p.
  1523. Persist            ƒƒ Persist.p.o Persist.make StARTGlue.a.o
  1524.     Link    StARTGlue.a.o ∂
  1525.             Persist.p.o ∂
  1526.             "{Libraries}Runtime.o" ∂
  1527.             "{PLibraries}PasLib.o" ∂
  1528.             -sn PASLIB=Main ∂
  1529.             -o Persist
  1530.     MakeStandAlone Persist -restype CUST -resnum 129 -o Persist.rsrc
  1531.  
  1532. Persist.p.o        ƒ Persist.p Persist.make
  1533.     Pascal Persist.p
  1534. This makefile contains a couple of interesting things that are worth examining. The first point to note is that we link with a file called StARTGlue.a.o. This file contains a few useful routines, including UseGlobals and DoneWithGlobals. It also contains a special header routine that performs some crucial setup. This setup needs to be performed before any of our custom code can be executed, so StARTGlue.a.o should be the first file in the link list. 
  1535. The second interesting thing about the makefile is the statement -sn PASLIB=Main. Recall that MakeStandAlone requires a file that contains the resources shown in Figure 3 in order to perform its magic. Specifically, MakeStandAlone demands that there be only three segments with a single entry point each into CODE 1 and CODE 2. However, when we link with PasLib.o, we create a fourth segment called PASLIB. We therefore get rid of this segment by merging it with the rest of our executable code in CODE 1, the Main segment. 
  1536. After linking and running the resulting file through the MakeStandAlone tool, we’re left with a resource containing standalone code that sets up and uses its own set of global variables. Following are highlights from the Persist sample shown above. Some routines have been removed, since we’ll be examining them in depth later. 
  1537. Entry
  1538. +0000    00000     BRA.S    Entry+$0014
  1539. +0002    00002     DC.B        $0000                        ; flags
  1540. +0004    00004     DC.B        $43555354                    ; resource type (CUST)
  1541. +0008    00008     DC.B        $0081                        ; resource ID (129)
  1542. +000A    0000A     DC.B        $0000                        ; version
  1543. +000C    0000C     DC.B        $00000000                    ; refCon
  1544. +0010    00010     DC.B        $00000000                    ; cached offset to globals
  1545. +0014    00014     BRA        MAIN
  1546.  
  1547. [ UseGlobals, DoneWithGlobals, GetSAA5, and CalculateOffset removed ]
  1548.  
  1549. MAIN                                                                ; from Persist.p
  1550. +0000    000076    LINK        A6,#$FFF8
  1551. +0004    00007A    PEA        -$0008(A6)                    ; UseGlobals(save);
  1552. +0008    00007E    JSR        UseGlobals
  1553. +000C    000082    MOVE.L    $0008(A6),-(A7)            ; parm * parm
  1554. +0010    000086    MOVE.L    $0008(A6),-(A7)
  1555. +0014    00008A    JSR        %I_MUL4
  1556. +0018    00008E    MOVE.L    (A7)+,D0
  1557. +001A    000090    ADD.L    D0,-$0004(A5)                ; add to accumulation
  1558. +001E    000094    MOVE.L    -$0004(A5),$000C(A6)    ; return as function result
  1559. +0024    00009A    PEA        -$0008(A6)                    ; DoneWithGlobals(save);
  1560. +0028    00009E    JSR        DoneWithGlobals
  1561. +002C    0000A2    UNLK        A6
  1562. +002E    0000A4    MOVE.L    (A7)+,(A7)
  1563. +0030    0000A6    RTS
  1564.  
  1565. [ %I_MUL4 removed ]
  1566.  
  1567. Globals
  1568. +0000    000E4     DC.W        $0000, $0000                ; global var accumulation
  1569. +0004    000E8     DC.W        $0000, $0000                ; 32 bytes of app parms
  1570. +0008    000EC     DC.W        $0000, $0000
  1571. +000C    000F0     DC.W        $0000, $0000
  1572. +0010    000F4     DC.W        $0000, $0000
  1573. +0014    000F8     DC.W        $0000, $0000
  1574. +0018    000FC     DC.W        $0000, $0000
  1575. +001C    00100     DC.W        $0000, $0000
  1576. +0020    00104     DC.W        $0000, $0000
  1577. Entry, UseGlobals, DoneWithGlobals, GetSAA5, and CalculateOffset are all routines linked in from the StARTGlue.a.o file; MAIN is from the Persist.p source file; and %I_MUL4 is a library routine from PasLib.o. Following these routines are 36 bytes of data. The first 4 bytes are for our global variable, accumulation. The final 32 bytes are the application parameters above A5 that the system occasionally uses. 
  1578. Let’s take a look at the MAIN function, which shows us accessing our global variable. First, we call UseGlobals to determine what A5 should be and to set A5 to that value. In this case, UseGlobals will set A5 to point to Globals+$0004, placing our single 
  1579. 4-byte global below A5, and the 32 bytes of system data above A5. Next, we push the value we want to square onto the stack twice and call %I_MUL4 to multiply the two 4-byte values. 
  1580. Finally, we get to the fun part, where we add the result of %I_MUL4 to our global variable. This is done by the instruction at MAIN+$001A: ADD.L D0,-$0004(A5). This instruction says to take the value in register D0 and add it to the number stored four bytes below A5. Because A5 points to Globals+$0004, this instruction adds D0 to the value starting at Globals.
  1581. THE MAKESTANDALONE TOOL 
  1582. The code above was created by the MakeStandAlone tool. Let’s look now at the workhorse function of that tool, ConvertAppToStandAloneCode. It’s this function that takes an application conforming to the format shown in Figure 3 and converts it to the standalone resource shown in Figure 5. 
  1583. ConvertAppToStandAloneCode starts by declaring a ton of variables, all of which are actually used. It then opens the file containing the segments shown in Figure 3 by calling OpenResFile on gInputFile, a string variable set up before calling this routine. If we can’t open the file, we blow out by calling ErrorExit, a routine that prints the string passed to it and then aborts back to the MPW Shell. 
  1584. PROCEDURE ConvertAppToStandAloneCode;
  1585.  
  1586.     VAR
  1587.         refNum:                 INTEGER;
  1588.         code0:                    Code0Handle;
  1589.         code1:                    CodeHandle;
  1590.         code2:                    CodeHandle;
  1591.         sizeOfGlobals:        LONGINT;
  1592.         expandedGlobals:        Handle;
  1593.         myA5:                    LONGINT;
  1594.         codeSize:                LONGINT;
  1595.         address:                CStrPtr;
  1596.         err:                        OSErr;
  1597.         fndrInfo:                FInfo;
  1598.         existingResource:    Handle;
  1599.  
  1600.     BEGIN
  1601.         refNum := OpenResFile(gInputFile);
  1602.         IF (refNum = - 1) | (ResError = resFNotFound) THEN
  1603.             ErrorExit('Error trying to open the source file.', ResError);
  1604. Loading the segments. ConvertAppToStandAloneCode then scopes out the contents of the file it has just opened. 
  1605. The first thing it looks at is CODE 0, which contains the application’s jump table. If CODE 0 exists and we can load it, we mark it nonpurgeable and call a utility routine, ValidateCode0, to make sure that CODE 0 contains what we expect. Here’s what the code looks like:
  1606. code0 := Code0Handle(Get1Resource('CODE', 0));
  1607. IF (code0 = NIL) | (ResError <> noErr) THEN
  1608.     ErrorExit('Couldn’t load CODE 0 resource.', ResError);
  1609. HNoPurge(Handle(code0));
  1610. ValidateCode0(code0);
  1611. MakeStandAlone requires that the input file conform strictly to the format shown in Figure 3. Among other things, this means that there should be only two entries in the jump table, one for CODE 1 and one for CODE 2. ValidateCode0 checks for this condition and makes a few other sanity checks to make sure that CODE 0 doesn’t contain any other information that we’d otherwise have to deal with. If there are any problems, ValidateCode0 calls ErrorExit with an appropriate message. Thus, if ValidateCode0 returns, everything appears to be OK with CODE 0. 
  1612. At times it might be tricky or impossible to create a CODE 1 resource with only one entry point. In some cases, you can bludgeon your code into a single segment by passing -sn to the Link tool, as was done earlier. Unfortunately, this won’t always work. For instance, some MPW routines are compiled to require jump table entries. (Examples of such routines are sprintf and its subroutines.) If you try to use any of these routines, you’ll get more than one entry point in CODE 1. The only way to avoid this problem is to keep away from library routines that require jump table entries. If you’re in doubt, simply attempt to use the routine in question; the compiler, the linker, or MakeStandAlone will tell you if anything is wrong.
  1613. ConvertAppToStandAloneCode next checks the remaining resources, CODE 1 and CODE 2. CODE 1 contains the executable code that will make up the bulk of the standalone code resource, and CODE 2 contains the compressed data holding the global variables’ initial values, as well as the routines that decompress that data. Each segment is loaded and passed to ValidateCode to make sure that the resource looks OK. 
  1614. code1 := CodeHandle(Get1Resource('CODE', 1));
  1615. IF (code1 = NIL) | (ResError <> noErr) THEN
  1616.     ErrorExit('Couldn’t load CODE 1 resource.', ResError);
  1617. HNoPurge(Handle(code1));
  1618. ValidateCode(code1, 1, 0);
  1619. code2 := CodeHandle(Get1Resource('CODE', 2));
  1620. IF (code2 = NIL) | (ResError <> noErr) THEN
  1621.     ErrorExit('Couldn’t load CODE 2 resource.', ResError);
  1622. HNoPurge(Handle(code2));
  1623. ValidateCode(code2, 2, 8);
  1624. ValidateCode takes a handle to the segment, along with a couple of values used in the sanity check. The first number is actually the resource ID of the segment and is used when reporting any errors. The second value is the jump table offset of the entry point for this segment and is checked against the segment header (see Inside Macintosh Volume II, page 61, for a description of this header). Again, if any problems are discovered or any unexpected values encountered (such as more than one entry point per segment), ValidateCode aborts by calling ErrorExit. 
  1625. Converting to a standalone resource. Once the three segments have been loaded into memory and validated, we’re ready to convert these resources into a single standalone resource. We begin by decompressing the data that represents the preinitialized values for our global data. The first part of accomplishing this is getting a temporary buffer to hold the expanded values. We find the size of this buffer by looking at the belowA5 field in CODE 0. We then create a buffer this size by calling NewHandle. 
  1626. sizeOfGlobals := code0^^.belowA5;
  1627. expandedGlobals := NewHandle(sizeOfGlobals);
  1628. IF expandedGlobals = NIL THEN
  1629.     ErrorExit('Couldn’t allocate memory to expand A5 data.', MemError);
  1630. We next perform the magic that expands the global variables into the buffer. CODE 2 contains the decompression routines, so all we do is call them. The function that performs this decompression is called _DATAINIT, which our validation routines have already confirmed is the entry point to CODE 2. _DATAINIT needs to have A5 already pointing to the top of the globals area, which in our case is the end of the handle we just created. After calling SetA5 to do this, we use CallProcPtr, a little inline assembly routine, to call _DATAINIT in CODE 2. _DATAINIT fills in our handle with the initial values for our global variables and then kindly returns to us. We quickly restore the previous value of A5 so that we can access our own global variables again, and then prepare to finish with the input file. We’ll need CODE 1 later, so we detach it from the input file, and then close the input file. 
  1631. myA5 := SetA5(ord4(expandedGlobals^) + sizeOfGlobals);
  1632. CallProcPtr(ProcPtr(ord4(code2^) + SizeOf(CodeRecord)));
  1633. myA5 := SetA5(myA5);
  1634. DetachResource(Handle(code1));
  1635. CloseResFile(refNum);
  1636. At this point, we’re done with the input file, and we have in our possession two handles. The code1 handle contains the executable code for the standalone resource, and the expandedGlobals handle contains the global data. Our task at this point is to combine these two pieces of data.
  1637. We start by getting the size of the actual object code in CODE 1. This is the size of the entire handle, less the size of the CODE resource header. The handle is then grown large enough to hold the object code, the global data, and the 32 bytes of application parameters. If we can’t grow the handle, we exit. Game over.
  1638. codeSize := GetHandleSize(Handle(code1)) - SizeOf(CodeRecord);
  1639. SetHandleSize(Handle(code1), codeSize + sizeOfGlobals + kAppParmsSize);
  1640. IF MemError <> noErr THEN
  1641.     ErrorExit('Couldn’t expand CODE 1 handle.', MemError);
  1642. Once the handle containing the code is large enough, we call BlockMove twice to put everything in place. The first call to BlockMove moves the object code down in the handle, effectively removing the segment header. This header is useful only for segments and jump table patching; we don’t need it for our standalone resource. The second call to BlockMove copies the global data stored in expandedGlobals to the end of the handle holding the object code. We finish up by calling FillChar, a built-in Pascal routine, to clear out the 32 bytes of application parameters. 
  1643. BlockMove(Ptr(ord4(code1^) + SizeOf(CodeRecord)), Ptr(code1^), codeSize);
  1644. BlockMove(expandedGlobals^, Ptr(ord4(code1^) + codeSize), sizeOfGlobals);
  1645. address := CStrPtr(ord4(code1^) + codeSize + sizeOfGlobals);
  1646. FillChar(address^, 32, CHAR(0));
  1647. Filling out the header. Our standalone code resource is now almost complete. All that remains is to fill out the fields of the standard header that seems to begin most standalone code resources. 
  1648. The header consists of a word for a set of flags, the type and ID of the resource, and a word for a version number. These fields were written to our original CODE 1 when we linked with StARTGlue.a.o, but they were uninitialized. We take the opportunity here to fill in these fields. 
  1649. As an additional goodie, our standard header contains a 4-byte refCon that can be used for anything the standalone code wants (for example, holding some data that the calling application can access).
  1650. Once the global data has been appended to the object code handle, we no longer need the expandedGlobals handle, so we dispose of it and prepare to write out our objet d’art.
  1651. WITH StdHeaderHandle(code1)^^ DO BEGIN
  1652.     flags := gHdrFlags;
  1653.     itsType := gResType;
  1654.     itsID := gResID;
  1655.     version := gHdrVersion;
  1656.     refCon := 0;
  1657. END;
  1658.  
  1659. DisposeHandle(expandedGlobals);
  1660. Writing the standalone resource. The first step to writing out our standalone code resource is to open the file that will hold it. We do this by calling OpenResFile. If OpenResFile reports failure, it’s probably because the file doesn’t exist. Therefore, we try to create the file by calling CreateResFile. If that succeeds, we set the Finder information of the output file so that we can easily open it with ResEdit, and then attempt to open the file again. If that second attempt fails, we give up by calling ErrorExit. 
  1661. refNum := OpenResFile(gOutputFile);
  1662. IF (refNum = - 1) | (ResError = resFNotFound) THEN BEGIN
  1663.     CreateResFile(gOutputFile);
  1664.     IF (ResError <> noErr) THEN
  1665.         ErrorExit('Error trying to create the output file.', ResError);
  1666.  
  1667.     err := GetFInfo(gOutputFile, 0, fndrInfo);
  1668.     IF err <> noErr THEN
  1669.         ErrorExit('Error getting finder information.', err);
  1670.  
  1671.     fndrInfo.fdType := 'rsrc';
  1672.     fndrInfo.fdCreator := 'RSED';
  1673.     err := SetFInfo(gOutputFile, 0, fndrInfo);
  1674.     IF err <> noErr THEN
  1675.         ErrorExit('Error setting finder information.', err);
  1676.  
  1677.     refNum := OpenResFile(gOutputFile);
  1678.     IF (refNum = - 1) | (ResError = resFNotFound) THEN
  1679.         ErrorExit('Error trying to open the output file.', ResError);
  1680. END
  1681. If our first call to OpenResFile succeeded (skipping to the ELSE clause shown below), the file already exists and may need to be cleaned up a little. If the output file already contains a resource with the same type and ID of the resource we want to write, we need to get rid of it. Calls to RmveResource and DisposeHandle accomplish that grisly task. 
  1682. ELSE BEGIN
  1683.     SetResLoad(FALSE);
  1684.     existingResource := Get1Resource(gResType, gResID);
  1685.     SetResLoad(TRUE);
  1686.  
  1687.     IF existingResource <> NIL THEN BEGIN
  1688.         RmveResource(existingResource);
  1689.         DisposeHandle(existingResource);
  1690.     END;
  1691. END;
  1692. At this point, we have a handle that needs to be added to a file as a resource, and an open file waiting for it. Three quick calls to the AddResource, WriteResource, and SetResAttrs routines take care of the rest of our duties, and the standalone code resource is written to the designated file. We then close the file and leave ConvertAppToStandAloneCode with the knowledge of a job well done. 
  1693.     AddResource(Handle(code1), gResType, gResID, gResName);
  1694.     IF ResError <> noErr THEN
  1695.         ErrorExit('Error adding the standalone resource.', ResError);
  1696.  
  1697.     WriteResource(Handle(code1));
  1698.     IF ResError <> noErr THEN
  1699.         ErrorExit('Error writing the standalone resource.', ResError);
  1700.  
  1701.     SetResAttrs(Handle(code1), gResFlags);
  1702.     IF ResError <> noErr THEN
  1703.         ErrorExit('Error setting the resource attributes.', ResError);
  1704.  
  1705.     CloseResFile(refNum);
  1706. END;
  1707. UP CLOSE AND PERSONAL WITH STARTGLUE.A.O 
  1708. Converting our application into a standalone code resource is only part of the process. The other part involves the routines that allow our code to execute on its own. These routines preserve the A5 world of the host application, set up the standalone code’s A5 world, and restore the host application’s A5 world when the standalone code is finished.
  1709. These routines are provided by StARTGlue.a.o. StARTGlue.a.o includes four client (external) routines (UseGlobals, CopyHostQD, DoneWithGlobals, and GetSAA5), an internal routine (CalculateOffset), and a block of public and private data. Because of this embedded block of data, the library is written in assembly language. Let’s take a look at the source file, StARTGlue.a. 
  1710.                         CASE            OFF
  1711.  
  1712.                         INCLUDE        'Traps.a'
  1713.                         INCLUDE        'QuickEqu.a'
  1714.                         INCLUDE        'SysEqu.a'
  1715. FirstByte            MAIN
  1716.                         IMPORT        Main, _DATAINIT
  1717.                         ENTRY        gGlobalsOffset
  1718.                         bra.s        Island
  1719.  
  1720.                         dc.w            0                        ; flags
  1721.                         dc.l            0                        ; resType
  1722.                         dc.w            0                        ; ID
  1723.                         dc.w            0                        ; version
  1724.                         dc.l            0                        ; refCon 
  1725.  
  1726. gGlobalsOffset        dc.l            0                    ; offset to globals
  1727. By convention, standalone code resources start with a standard header having the format shown in Table 2.
  1728. Table 2
  1729. Standard Header for Standalone Code Resources
  1730. Field    Size    Contents
  1731. entry    2 bytes    Branch instruction to first byte of executable code.
  1732. flags    2 bytes    User-defined flags. You can set and define this field any way
  1733.         you want.
  1734. resType    4 bytes    Resource type.
  1735. resID    2 bytes    Resource ID.
  1736. version    2 bytes    Version number. The values for this field are unregulated, 
  1737.         but usually follow the same format as the version numbers 
  1738.         in 'vers' resources.
  1739. refCon    4 bytes    User-defined reference constant. Use this field for anything
  1740.         you want, including communicating with the host.
  1741. Nothing requires standalone code to include this header. However, it’s nice to follow convention, and including the resource type and ID makes identifying blocks in the heap easier.
  1742. When you compile and link with StARTGlue.a.o, these fields are empty (set to zero). However, the MakeStandAlone tool automatically fills in these fields based on command-line options when it converts your code.  
  1743. StARTGlue.a.o’s entry point branches to the following code, which then branches to a function called Main. The reason for this double jump is to maintain the standard header for a standalone code resource. The first two bytes are used to jump to the code’s entry point. However, we can jump only 128 bytes with the 68000’s 2-byte relative branch instruction. If Main happens to be further than 128 bytes from the start of the code resource, we would need to use the 4-byte branch instruction. To provide for this contingency, we have our 2-byte branch instruction jump to the 
  1744. 4-byte branch instruction, which can then jump to anywhere that it wants with impunity.
  1745. Island
  1746.                         bra            Main
  1747.                         lea            _DATAINIT,A0        ; dummy line to reference
  1748.                                                                 ;   _DATAINIT
  1749. The LEA instruction that follows the branch is a dummy statement. Its sole purpose is to trick the linker into including _DATAINIT, the routine that the MakeStandAlone tool calls to decompress the global data. Because the LEA instruction immediately follows an unconditional branch, and because it doesn’t have a label that can be jumped to, it’s never actually executed. 
  1750. UseGlobals. The UseGlobals function is used to set up the standalone code’s A5 world. An example of this is shown earlier in the Persist program. 
  1751. UseGlobals performs three functions:
  1752. •    It sets the A5 register and the low-memory location CurrentA5 to the correct value for the standalone code. It determines the standalone code’s A5 value by calling the GetSAA5 function, described later.
  1753. •    It copies the host application’s QuickDraw globals pointer to the standalone code’s QuickDraw globals pointer (this pointer is the 
  1754. 4-byte value to which A5 normally points). By copying this pointer, the standalone code can call Toolbox routines knowing that A5 references a valid set of QuickDraw globals.
  1755. •    It returns the host application’s A5 and CurrentA5 values so that they can later be restored.
  1756. ;
  1757. ; PROCEDURE UseGlobals(VAR save: SavedA5Rec);
  1758. ; { Balance with DoneWithGlobals. }
  1759. ;
  1760. UseGlobals            PROC            EXPORT
  1761.                         IMPORT        GetSAA5
  1762.  
  1763.                         move.l        4(sp),A0                ; get ptr to save record
  1764.                         move.l        A5,(A0)                    ; save A5
  1765.                         move.l        CurrentA5,4(A0)        ; save low-memory value
  1766.                         clr.l        -(sp)                    ; make room for function 
  1767.                                                                     ;   result
  1768.                         bsr.s        GetSAA5                    ; get our own A5
  1769.                         move.l        (sp)+,A5                ; make it real
  1770.                         move.l        A5,CurrentA5            ; make it really real
  1771.                         move.l        4(sp),A0                ; get ptr to save record
  1772.                         move.l        (A0),A0                    ; get host’s A5
  1773.                         move.l        (A0),(A5)                ; copy his QD globals ptr
  1774.                         move.l        (sp)+,(sp)                ; remove parameters
  1775.                         rts                                        ; return to caller
  1776. CopyHostQD. The CopyHostQD routine is an optional utility routine. You don’t need to call it unless you have to ensure that the host’s QuickDraw globals remain undisturbed. By default, your standalone code shares the same set of QuickDraw globals as the host application. However, if you have unusual requirements, you may need to establish your own set of QuickDraw globals. 
  1777. A simple way to set up your own QuickDraw globals would be to call InitGraf(@thePort) after you called UseGlobals. This would create a valid set of QuickDraw globals. However, some standalone code resources initially need to work with information provided by the host application. For instance, a custom MDEF normally draws in the currently set port. To inherit such information, you can call CopyHostQD just after you call UseGlobals. 
  1778. ;
  1779. ; PROCEDURE CopyHostQD(thePort: Ptr; oldA5: Ptr);
  1780. ;        { Balance with DoneWithGlobals. }
  1781. ;    assumes that A5 has already been set up to our globals
  1782. ;
  1783. CopyHostQD            PROC            EXPORT
  1784.  
  1785. returnAddress        EQU            0
  1786. oldA5                EQU            returnAddress+4
  1787. thePortPtr            EQU            oldA5+4
  1788. parameterSize        EQU            thePortPtr-oldA5+4
  1789.  
  1790.                         move.l        oldA5(sp),A0            ; get oldA5
  1791.                         move.l        (A0),(A5)                ; make (A5) point to 
  1792.                                                                     ;   thePort
  1793.         
  1794.                         move.l        (A0),A0                    ; get host’s thePort 
  1795.                                                                     ;   pointer
  1796.                         move.l        thePortPtr(sp),A1    ; get our thePort pointer
  1797.                         move.l        #grafSize,D0            ; copy whole grafPort
  1798.                         move.l        D0,D1                    ; since the pointers
  1799.                         subq.l        #4,D1                    ;   point near the end of                         sub.l        D1,A0                    ;   the QD globals, move 
  1800.                         sub.l        D1,A2                    ;   them down to point 
  1801.                                                                     ;   to the beginning
  1802.                         _BlockMove
  1803.         
  1804.                         move.l        (sp)+,A0                ; pop return address
  1805.                         add            #parameterSize,sp    ; pop parameters
  1806.                         jmp            (A0)                        ; return to caller
  1807. DoneWithGlobals. The DoneWithGlobals routine reverses the effects of UseGlobals. It simply restores the values of the A5 register and low-memory global CurrentA5 to the values saved by UseGlobals. 
  1808. ;
  1809. ; PROCEDURE DoneWithGlobals(restore: SaveA5Rec);
  1810. ;
  1811. DoneWithGlobals    PROC            EXPORT
  1812.  
  1813.                         move.l        (sp)+,A0                ; pull off return address
  1814.                         move.l        (sp)+,A1                ; address of record 
  1815.                                                                     ;   holding info
  1816.                         move.l        (A1),A5                    ; first restore A5
  1817.                         move.l        4(A1),CurrentA5        ; then restore low-memory 
  1818.                                                                     ;   value
  1819.                         jmp            (A0)                        ; return to caller
  1820. GetSAA5. You probably won’t need to call GetSAA5. This function is called by UseGlobals to return the value that’s used to refer to the standalone code’s A5 world. The first time this function is called, this value needs to be calculated. After that, the offset from the beginning of the code to the global data is cached and is used in subsequent calls to GetSAA5. Once the offset has been determined, it’s added to the address of the start of the standalone code and returned to the caller. 
  1821. ;
  1822. ; FUNCTION GetSAA5: LONGINT;
  1823. ;
  1824. GetSAA5                PROC            EXPORT
  1825.                         IMPORT        CalculateOffset
  1826.  
  1827.                         move.l        gGlobalsOffset,D0    ; have we done this 
  1828.                                                                     ;   before?
  1829.                         bne.s            @1                        ; yes, so use cached 
  1830.                                                                     ;   value
  1831.                         bsr.s            CalculateOffset    ; nope, so calculate it
  1832. @1
  1833.                         lea                FirstByte,A0        ; get base address
  1834.                         add.l            A0,D0                ; add offset to top of 
  1835.                                                                     ;   globals
  1836.                         move.l            D0,4(sp)            ; set function result
  1837.  
  1838.                         rts                                        ; return to caller
  1839. CalculateOffset. CalculateOffset determines the offset from the beginning of the code resource to the location that A5 should point to. We see from Figure 5 that A5 should point to the location 32 bytes before the end of the resource. Therefore, we get a handle to the code resource, get the code resource’s size, subtract 32 from it, and return the result as the needed offset. 
  1840. CalculateOffset    PROC
  1841.  
  1842.                         lea            FirstByte,A0            ; get pointer to us
  1843.                         _RecoverHandle                        ; get handle to us
  1844.                         _GetHandleSize                        ; find our size (= offset 
  1845.                                                                     ;   to end of globals)
  1846.                         sub.l        #32,D0                    ; account for 32 bytes of 
  1847.                                                                     ;   appParms
  1848.                         lea            gGlobalsOffset,a0    ; get address to save 
  1849.                                                                     ;   result
  1850.                         move.l        D0,(A0)                    ; save this offset for 
  1851.                                                                     ;   later
  1852.                         rts
  1853. SUMMARY OF THE THREE SOLUTIONS 
  1854. This article has explored three ways to access global variables in standalone code: the THINK method, the OpenA5World method, and the StART method.
  1855. The THINK method uses the A4 register to access the global variables. The A4 register is managed by the RememberA0, SetUpA4, and RestoreA4 functions. The advantages of the THINK method are as follows:
  1856. •    The host’s A5 register is untouched.
  1857. •    The storage for globals is coupled with the storage for the code itself, meaning that no additional storage needs to be allocated or disposed of.
  1858. The disadvantages of the THINK method are:
  1859. •    The A4 register cannot be used for code optimization.
  1860. •    Standalone code resources cannot be marked purgeable without the risk of losing any values stored in global variables.
  1861. •    Unless you use the multisegmented standalone code features of the THINK environments, you’re limited to a combined total of 32K of code and data.
  1862. •    The global data is stored in an uncompressed format on disk.
  1863. Because MPW doesn’t provide the compiler support that THINK does, the approach described in the Tech Note reuses register A5 to access global variables. Support is provided by the functions MakeA5World, SetA5World, RestoreA5World, DisposeA5World, OpenA5World, and CloseA5World. The advantages of this method are as follows:
  1864. •    It has a compact on-disk format (global data is compressed).
  1865. •    A4 is free for code optimization.
  1866. •    The code resource can be marked purgeable.
  1867. •    You can access 32K of code and 32K of data.
  1868. The disadvantages of the Tech Note method are:
  1869. •    It requires support from the host application for persistence of globals.
  1870. •    Care must be taken to restore the host’s A5 when control is returned to the host (which can include callbacks, a la HyperCard).
  1871. The StART solution tries to incorporate the best of both worlds. StART’s use of the A5 register is managed by calls to UseGlobals, DoneWithGlobals, and (optionally) CopyHostQD. Its advantages are as follows:
  1872. •    A4 is free for code optimization.
  1873. •    You can access 32K of code and 32K of data.
  1874. •    The storage for globals is coupled with the storage for the code itself, meaning that no additional storage needs to be allocated or disposed of.
  1875. The disadvantages it doesn’t address are:
  1876. •    Care must be taken to restore the host’s A5 when control is returned to the host (which can include callbacks).
  1877. •    Standalone code resources cannot be marked purgeable without the risk of losing any values stored in global variables.
  1878. •    The global data is stored in an uncompressed format on disk.
  1879. There’s one major limitation that none of these techniques address. Neither MPW nor THINK can handle certain kinds of global variables — ones that get preinitialized to some absolute address — in standalone code. For instance, consider the following C source:
  1880. char *myStrings[] = {
  1881.     "Macintosh",
  1882.     "Programming",
  1883.     "Secrets",
  1884.     "2nd Edition"
  1885. };
  1886. This declares an array of pointers to the four given strings. When this definition appears in source code in a THINK C project, the compiler will tell you that this sort of initialization is illegal in standalone code. However, MPW’s compilers aren’t as integrated into the build process as THINK’s are, and they don’t know to give you a similar warning. Thus, we can compile an array like the one just shown without an error. When the MakeStandAlone tool is later executed, it will dutifully initialize the array with pointers to the given strings. However, these pointers are in the form of absolute memory locations, which are valid only at the time the globals are expanded. When it’s time to execute the standalone code, it’s almost certain that the strings won’t be loaded into the same place they were in when the globals were expanded, making the pointers in our array invalid.
  1887. All you can do to avoid this problem is make sure that you don’t have any global variables that are preinitialized to the addresses of other objects (such as strings, functions, and other variables). Without knowing the format of the compressed global data that _DATAINIT expands, it isn’t possible to program the MakeStandAlone tool to look for the problem globals. 
  1888. WHERE TO GO FROM HERE
  1889. This article just scratches the surface of what can be done with MPW. It gives a little behind-the-scenes information and describes how to take advantage of that information with a custom tool. The intrepid explorer may want to apply what’s learned here to some other topics.
  1890. 32-BIT EVERYTHING
  1891. With MPW 3.2, Apple has eliminated most of the traditional 32K barriers imposed by 16-bit fields. By expanding fields in the jump table to 32 bits, replacing the 
  1892. Segment Loader, patching object code with absolute addresses, and providing user-callable runtime routines, MPW allows you to create code and data blocks of practically any size. It may be interesting to explore the new formats and data structures used with 32-bit everything to see how you can use them in the same way we used the old 16-bit information.
  1893. MERGING START TECHNIQUES WITH THOSE OF THE TECH NOTE
  1894. The StART method uses a bit of assembly language to provide some runtime support for standalone code. Specifically, it maintains a reference to the code’s global variables in a local data field. This same technique could be used to partially remove the dependency of code created with the Tech Note method on the host application.
  1895. JUMP TABLE
  1896. We’ve fully explored the area below A5, but only a small part of the area above A5. We’ve looked at the globals area below A5 and the application parameters area above A5, but the majority of the “above A5 world” is normally occupied by a jump table that supports multisegmented applications. With a little more work and runtime support, it may be possible to write multisegmented standalone code in MPW.
  1897. Multisegmented standalone code offers more benefits than simply allowing you to write huge chunks of standalone code. Programmers using Object Pascal and readers of the Macintosh Technical Note “Inside Object Pascal” (formerly #239) know that polymorphism requires the use of a jump table. By implementing support for a jump table in standalone code, it should be possible to write standalone code with Object Pascal or C++’s PascalObjects. C++ programmers writing native C++ classes or classes based on HandleObject should refer to Patrick Beard’s article, “Polymorphic Code Resources,” in develop Issue 4.
  1898. THANKS DEPARTMENT
  1899. This article would not have existed if not for the help and inspiration of the following individuals and nonindividuals:
  1900. •    The creators of the A4 method used in the THINK products for showing that globals could be used in standalone code
  1901. •    The authors of the BuildDCMD tool for MacsBug, a tool that proved that applications conforming to a certain guideline could be converted to standalone code
  1902. •    Larry Rosenstein, who, thanks to file sharing, unknowingly provided the source code shell for the MakeStandAlone tool (all the stuff that deals with error handling and command-line parsing)
  1903. THE VETERAN NEOPHYTE 
  1904.     DIGITAL ZOOLOGY
  1905.     
  1906. DAVE JOHNSON 
  1907. 4 a.m. Friday still feels like Thursday. Five hours remain until the contest. Bean dip slowly dries around the rim of a jar, turning a darker, almost translucent brown. This corner of the table, the one nearest the center of the room, is littered with the strange and particular combination of plastic, paper, metal, glass, and organic debris that typifies the remains of junk food. The room, a large but nondescript meeting room with beige-painted cinder block walls, is bathed in fluorescent light, 60-cycle radiation painting the few remaining occupants a lovely whitish green.
  1908. A few of them still hunch over keyboards, pecking feverishly, squeezing the last few desperate instructions into their robots. Others sprawl on the floor around the test course, watching carefully and hopefully as their fragile creations, their little Lego and wire and motor golems, their tiny mind children, haltingly — but autonomously — negotiate their way toward the goal. The expressions on their faces are variously rapt, worried, and proud.
  1909. The scene is the early morning of the last day of Artificial Life III, a week-long scientific hoe-down that took place last June in Santa Fe. The hardy hackers in the cluttered room at the back of the building are entrants in a robot-building contest that will be run as part of the “Artificial 4H Show” beginning at 9 a.m. Their robot creatures run the gamut from the eminently practical to the practically insane. 
  1910.     The insane ones, of course, are by far the more interesting. One, appropriately named Rob Quixote, has only a single wheel, and therefore must steer by rotating an oversized horizontal windmill-like contraption fastened to its head, effectively pushing against the air to turn itself. Another moves by a sort of spastic lurching; throwing its entire front section forward, it gains an awkward quarter inch, then gathers up its hindquarters for another throw. This one is so inefficient that it requires twice the usual number of batteries, and uses them up in a single run. Amazingly enough, though, it successfully traverses the course, albeit slowly and with much ineffectual thrashing. 
  1911. “Artificial life,” as a named discipline, appeared on the scientific scene relatively recently. The first conference happened in the fall of 1987, and gave joyous birth to this new field of scientific inquiry, or rather this new and rich confluence of many different fields. Scientists who had been working in isolation suddenly discovered others pursuing similar lines of investigation, and the meeting of minds was electric.
  1912. Artificial life is an attempt to create and study artificial systems — that is, systems created by humans — that mimic processes or exhibit behaviors usually associated only with living systems. Predictably, the primary medium that these systems are created on (in?) is computers; this is a field that depends heavily on technology to get its work done (they’re doomed if electricity ever becomes unavailable). Also predictably, a large proportion of its devotees are biologists, especially theoretical biologists.
  1913. Why would biologists want to study artificial life? Don’t they already have their hands full trying to figure out the real thing? Well, for one thing, there are a lot of experiments biologists would love to do that they simply can’t: nature doesn’t come with convenient levers and knobs, and you can never roll back time and try something over again. So if biologists can develop good models of biological phenomena, they can implement them on computers and run clean and tidy experiments that are repeatable, detailed, controlled, and manipulable down to the last detail. This is a far    
  1914.  
  1915.  cry from the messy, inexact, unrepeatable real world, and for some biologists would be tantamount to scientific nirvana.
  1916. But there’s another, larger reason for biologists to study artificial life. In the words of Chris Langton, self-described “midwife” of artificial life (he organized the first conferences and named the field), “Such systems can help us expand our understanding of life as it could be. By allowing us to view the life that has evolved here on Earth in the larger context of possible life, we may begin to derive a truly general theoretical biology capable of making universal statements about life wherever it may be found and whatever it may be 
  1917. made of.”
  1918. I like it.
  1919. When I read this I was hooked. Visions of bizarre, unknowable alien intelligences and strange, seething soups that cling and quiver and creep around filled my head. And here are real scientists hanging around seriously discussing it! This is some serious fun! And lots of different kinds of scientists are paying attention; biologists, mathematicians, physicists, chemists, robotocists, and computerists are all well represented at the conferences, with a sprinkling of philosophers, anthropologists, economists, and others. The gee-whiz factor hooked me, but the interdisciplinary thrust of artificial life reeled me in.
  1920. (In conversation people say “a-life.” I’ve seen it written as Alife, A-life, alife, and a-life. I wanted to use alife, but people tended to pronounce it like “get a life,” so I’ll use a-life instead.)
  1921. Another appeal for me is the tacit approval of the “build it first, then study it” approach in a-life. This method of building things and learning things (stumbling around, really, but intelligent stumbling, directed stumbling) has always been my particular forte. The premise is that we don’t need to completely understand something before we can build it or build a model of it, and that it’s very often more instructive to get a crude version up and working immediately than
  1922.     to try to refine the thing completely before trying it out. By fumbling around and building things blindly, we can often learn a lot by virtue of the happy 
  1923. accidents that inevitably occur. And it’s tons more fun that way.
  1924. There were far too many interesting things at the conference to describe them all here. Instead I want to tell you about one particular talk that caused me to have a powerful “Aha!” experience (and I live for “Aha!” experiences). If you know something about evolution already, the following may not be news to you, but presumably most computer programmers don’t study biology. 
  1925. The talk dealt with Lamarckian evolution. Lamarck was a contemporary of Darwin who postulated that the things experienced by an organism during its lifetime could affect the traits handed down to the next generation. As an example, a Lamarckian might believe that proto-giraffes had to stretch their necks up to reach the leaves at the tops of the trees, and because of all the stretching, their descendants were born with longer necks. Unfortunately for Lamarck and his followers, this is rubbish.
  1926. It turns out that as far as biological evolution is concerned, Lamarckism is nonexistent: there was no such thing at work in the development of life on Earth. So my curiosity was piqued when I saw the title of this talk by David Ackley and Michael Littman: “A Case for Distributed Lamarckian Evolution.” What, were they crazy? Talking Lamarck to all these modern scientists? (At the previous conference, Ackley had one of the few really amusing presentations, so of course I would have gone no matter what the topic, but this one looked particularly juicy.)
  1927. Ackley and Littman weren’t trying to convince people that Lamarckian evolution had anything to do with life on earth. What they did instead was compare the efficiencies of the two types of evolution. (They created a simple evolution simulation, and then compared Darwinian and Lamarckian evolution in their abilities to find a solution to a particular problem.) Hey, this is     
  1928.  
  1929. after all artificial life, so if Lamarckian evolution works better, we can use it, right? 
  1930. What they found was that when Lamarckian evolution was allowed to enter the picture — when the things learned in one generation were at least partially passed on to the next — the system was much, much better at solving the given problem. It consistently found better solutions faster in every single case they tried. This of course makes some intuitive sense. Rather than waiting for genetic shuffling to find a solution to the problem, the prior generation can point the current one in the right direction. So Lamarckian evolution is pretty much a great thing, evolutionarily speaking, because it gets you a lot further and it gets you there a lot faster. (Where it is exactly that you’re going is a question for the philosophers; for the moment, let’s just blithely assume that we really do want to get there.) Their point was that as simulation builders we should think about using Lamarckian inheritance in our simulations, because it works so well. But this point reinforced something else that had been rolling around in my head. 
  1931. There’s an evolutionary premise that I initially learned about through reading an article by a robotocist named Hans Moravec in the first Artificial Life proceedings. I learned more about it in Richard Dawkins’s book The Blind Watchmaker and in a fascinating book called Seven Clues to the Origin of Life by a Glasgow chemist named Graham Cairns-Smith. This particular concept is called “genetic takeover.” 
  1932. According to this idea, one substance can gradually replace another as the carrier of genetic information. Cairns-Smith postulates that life began with replicating inorganic crystals — clays, as a matter of fact — and that a genetic takeover gradually occurred, with proteins and nucleic acids gaining in dominance until finally the original materials were no longer needed. Dawkins and Moravec (and many others) think that a genetic takeover is occurring now, with human culture taking over from nucleic acids as the evolving entity, though they differ in their candidates for the new “gene-equivalent.”    Dawkins likes to speak about the “meme,” a very useful term first coined in his book The Selfish Gene. A meme is an idea, really, or a piece of information. It is immaterial, and requires a material substrate of brains, books, computers, or other media to exist. But given that substrate, the parallels with genes are very good. Just like genes, memes replicate (we tell each other good ideas, or write them down for others), memes mutate (we don’t always get it right in the telling), memes mate (ideas in combination often give birth to new ones), and memes compete for survival (“good” ideas stick around a long, long time, but “bad” ones die by not being passed on to anyone: mindshare is their means of existence). 
  1933. Moravec, on the other hand, seems to be more interested in the evolution of machines, and speculates convincingly and entertainingly that our machines, our artifacts, will eventually become the dominant evolving entities on Earth. Science fiction, or science fact? I don’t know — there are compelling arguments both ways — but in either case it makes for very good reading.
  1934. In any case, they think that perhaps here on Earth biological evolution is thoroughly obsolete, and 
  1935. almost despite myself I have to agree. Sure, it’s still operating, but the evolution of human bodies has been completely outstripped by the evolution of human culture. Bodies evolve at an extremely slow pace, but culture evolves incredibly fast, and humans are having such a profound impact on the Earth that biology simply can’t keep up. Look at the changes on Earth in the last millennium. Most of the species alive a thousand years ago have remained physically about the same, yet there’s no question that the Earth has undergone a radical transformation, and primarily at the hands of humans, as a by-product of their culture. (You might hesitate to call the rampant, wanton destruction and boundless consumption of resources that Earth has suffered at the hands of humans “evolution,” but remember that the word “evolution” does not necessarily imply improvement.) But why is it going so fast? How come humans do this and other species don’t?    
  1936.  
  1937. One of the primary distinctions between human beings and their close animal relatives is language. Humans can communicate with abstract symbols, and their communications can be “fossilized” in time (that is, written down for later). Here comes the “Aha!” we’ve all been waiting for: this ability allows humans to engage in a form of Lamarckian evolution! The things we learn in our lifetimes can be passed on to the next generation, though in a filtered sort of way. We can’t change the way our offspring are built, but we can change their behavior (teenagers notwithstanding). Other species do this to some extent, but humans are the unquestioned champs at shaping their offspring. 
  1938. As you can see, a-life —  just like life itself — is rife with philosophical conundrums and radical, thought-provoking concepts, and that’s much of the reason I stay interested. But probably the biggest reason of all that I like a-life is hard to express, except by analogy: I get the same feeling peering through a glass screen into a computer world full of digital critters that I do peering through the bars of a cage at the zoo. The xenophile in me wants to see all the forms that life can take, and get to know the minds of every other being. I want to puzzle out the motivations behind a critter’s behavior, and I love that shock of recognition I experience every time I look into an animal’s eyes — even the ones that are so alien, like birds and reptiles and fish. Again, it’s this feeling that there are universal properties of life waiting to be discovered, properties that apply not only to life as it has evolved on Earth but to all possible life, including the digital variety.    Are any of these a-life explorations really alive? That’s an energetic and ongoing debate among a-lifers, of course, and the answer ultimately depends on the definition you pick for the word “life.” Rather than arguing whether metabolism is more necessary to life than reproduction, though, I like to duck the definition issue. I don’t really care too much whether we call them alive, I want to see if people react to them as if they’re alive. I want to see that shock of recognition occur when people and digital organisms collide. (What if “they” recognize “us”?!) It’s sort of the Turing Test approach for life: if it seems alive — if people can’t tell that it’s not alive — then no matter what we call it, people will treat it as if it’s alive. That I’d like to see.
  1939.     Recommended reading
  1940.     •    Artificial Life by Steven Levy (Pantheon Books, 1992).
  1941.     •    The Blind Watchmaker by Richard Dawkins 
  1942.     (W. W. Norton & Company, 1987).
  1943.     •    The Selfish Gene by Richard Dawkins (Oxford
  1944.     University Press, 1976).
  1945.     •    Seven Clues to the Origin of Life by A. G. Cairns-Smith
  1946.     (Cambridge University Press, 1985).
  1947.     •    ZOTZ! by Walter Karig (Rinehart & Company, Inc.,
  1948.     1947). 
  1949.     
  1950.  
  1951. MACINTOSH Q & A 
  1952. Q    Here’s a tidbit I stumbled across in Inside Macintosh Volume VI, page 3-10: the four Dialog Manager procedures CouldDialog, CouldAlert, FreeDialog, and FreeAlert are no longer supported. I use CouldDialog, and I happened to notice that it didn’t work right when I tested it under System 7, but I reported it as a bug. Now you tell us that it’s not guaranteed to work in System 7. I can’t recall a trap ever becoming suddenly unsupported like this. What’s the story? 
  1953. A    The system software engineers felt that CouldDialog, CouldAlert, FreeDialog, and FreeAlert didn’t do much good under System 6, since the Could calls never completely guaranteed that all dialog items were loaded in. These calls also caused problems in the beta versions of System 7. Relatively little software uses those traps anymore; like many things in Inside Macintosh Volume I, they’re relics of the days when Macintosh programmers had to deal with desk accessory and floppy disk support issues. So these calls were simply patched out. In the final System 7, the traps return without doing anything.
  1954. Q    I can’t get the black-and-white version of my lasso-type tool to work correctly with CalcMask and CopyMask. With CalcCMask it seems to work fine. What could I be doing wrong?  
  1955. A    CalcMask and CalcCMask are similar in that they both generate a one-bit mask given a source bitmap. With CalcCMask, though, a pixMap can be used in place of the source bitmap; the seedRGB determines which color sets the bits in the mask image. An easy mistake to make is to forget that CalcCMask expects a pointer to a BitMap data structure while CalcMask expects a pointer to the actual bit image. And unlike CalcCMask, which uses bounding rectangles for the image’s dimensions, CalcMask uses the bitmap’s rowBytes and pixel image offsets to determine the bounding Rects for the image. A typical call to these routines is as follows:
  1956. BitMap    source, mask;
  1957. CalcMask (source.baseAddr, mask.baseAddr, source.rowBytes, 
  1958.     mask.rowBytes, source.bounds.bottom-source.bounds.top, 
  1959.     source.rowBytes>>1);
  1960. CalcCMask (&source, &mask, &(*source).bounds, &(*mask).bounds, 
  1961.     &seedRGB, nil, 0);
  1962. One last thing to note when using CalcMask is that the width of the image is in words and not bytes. To learn more about these routines, see page 24 of Inside Macintosh Volume IV and page 72 of Inside Macintosh Volume V. Also, the Developer CD Series disc contains a sample, CalcCMask&CalcMask, that shows how to use these routines.
  1963. Q    How do I update the color table of my off-screen graphics world without destroying the picture? 
  1964. A    The recommended approach for changing the color table of an existing GWorld involves calling UpdateGWorld, passing either clipPix or stretchPix for gWorldFlags. When passed either of these constants, QuickDraw knows to update the pixels of the pixMap image. Even though the actual image isn’t changed, the flags are still needed to remap the pixels to their new colors.
  1965. Q    Are there any C++ or C compilation flags that will optimize performance of the Macintosh Quadra computers? Even when I use the “-NeedsMC68030” flag in MacApp, an investigation of the MABuild source files reveals that it sets compiler flags only for the 68020 optimization. If Quadra-specific compilation flags don’t exist, do you have any Quadra performance optimization suggestions? 
  1966. A    The current MPW compilers don’t have a 68040 performance optimization flag, though Apple’s future compilers will optimize code for the best possible ’040 performance. In the meantime, here are some tips on ’040 performance tuning:
  1967. •    Cache management for the ’040 can give you the biggest performance boost. Keep program loops inside the cache space, and flush the cache as seldom as possible. In most cases you’ll have small loops inside the 4K instruction cache.
  1968. •    You might get better performance by not calling BlockMove, because the system flushes the cache when you call it in case you’re moving code. If you’re moving data, the cache doesn’t need to be flushed, but the system can’t tell from the BlockMove call whether you’re moving code or data. Testing will help you determine whether you should call BlockMove or write your own transfer routine. The new MOVE16 opcode is used by the BlockMove trap when the system is running on an ’040 processor, but because of problems with this opcode in early ’040 processors, it requires special handling. For details, see the Macintosh Technical Note “Cache As Cache Can” (formerly #261).
  1969. •    Transcendental functions aren’t implemented in the 68040 hardware as they are in the 68881 chip used with the 68020 and 68030. Consequently, the functions are emulated in software, resulting in slower performance. If you suspect that your floating point performance is less than optimal, consider modifying your code to use functions supported by the internal ’040 FPU. See the Macintosh Technical Note “FPU Operations on Macintosh Quadra Computers” (formerly #317) for more information about this performance factor. Future MPW compiler and library releases will support faster transcendental operations and floating point–to–integer conversions.
  1970. Q    In the past we had heard of a problem using calloc and NewPtr in the same program. Is this true? 
  1971. A    There are a few difficulties, which you can deal with if you need to. The primary problem is that calloc and all the other malloc routines weren’t designed for the Macintosh platform. Macintosh memory management is designed around trying to squeeze as much as possible out of a limited memory area, which is why handles are the primary storage scheme in a Macintosh; they can move, and so greatly reduce memory fragmentation. Because the malloc tools return a pointer, they have to be located in a locked block, so they tend to lead to fragmentation if used with any other memory allocation calls (such as NewPtr). For this reason, any use of the malloc suite of allocation calls isn’t recommended for Macintosh programs. The only good reason to use them is if you’re porting a large body of code from other platforms; in this case, it may be a reasonable tradeoff to keep the old allocation code.
  1972. You should also be aware that most of the Macintosh malloc routines never free up memory. When you malloc some space, the routine must first allocate it from the Memory Manager. It allocates a large block of space using NewPtr and divides it internally for distribution in response to malloc calls. If, however, you eventually free all the blocks you allocated from this NewPtr block, the block won’t be released to the Memory Manager with the DisposPtr call. This means that once you allocate some memory with malloc, you won’t be able to free it and then use that memory from a Macintosh allocation call. Thus, if you had two phases to your program, one of which used the malloc calls extensively and the second which used Toolbox calls, the second phase wouldn’t be able to use memory freed by the first phase. That memory is still available in the malloc pool, of course; it simply can’t be used by NewPtr or NewHandle. The malloc routines supplied by THINK C work similarly, as described in their Standard Libraries Reference. Thus, mixing the C and Macintosh allocation routines requires special care.
  1973. Q    Why do I get error -903 (a PPC Toolbox noPortErr) when I send an Apple event to a running application with AESend? 
  1974. A    The isHighLevelEventAware bit of the sending application’s SIZE -1 resource (and SIZE 0 resource, if any) must be set.
  1975. Q    Sometimes the Alias Manager mistakes one volume for another. In particular, we’re experiencing problems getting aliases to volumes to work correctly with our AppleTalk Filing Protocol (AFP) server volumes. Here’s how I can duplicate the problem: 
  1976. 1.    I mount two server volumes from my AFP server: VolA and VolB.
  1977. 2.    I use the Finder to create an alias file for each volume.
  1978. 3.    I unmount VolA.
  1979. 4.    I open the alias file for VolA. However, when I do this, VolB (which is still mounted) is opened.
  1980. Is this a bug in the Alias Manager or did we implement something the wrong way in our server?
  1981. A    As noted in the Alias Manager chapter of Inside Macintosh Volume VI, the Alias Manager uses three criteria to identify a volume: the volume’s name, the volume’s creation date, and the volume’s type. If the Alias Manager can’t find a mounted volume that matches all three criteria, it tries again with just the volume’s creation date and the volume’s type. This second attempt finds volumes that have been renamed. If that attempt fails, the Alias Manager tries one last time on mounted volumes with the volume’s name and the volume’s type. If it can’t find a mounted volume with those three attempts and the alias is to an AFP volume (a file server), the Alias Manager assumes the volume is unmounted and attempts to mount it.
  1982. The problem you’re having is probably happening because both volumes have the same creation date and type. That will cause the Alias Manager to mistake VolA for VolB and VolB for VolA when it attempts to match by volume creation date and volume type. You can prevent the Alias Manager from making this mistake by making sure your server volumes all have unique volume creation dates.
  1983. This same behavior can be observed when partitioned hard disks use the same volume creation date for all partitions. If one partition isn’t mounted, the Alias Manager can mistake one disk partition for another. 
  1984. Q    I’m looking for a Macintosh Toolbox routine that will allow me to turn down the backlight on a Macintosh PowerBook from within a screen saver to prevent screen burn and save battery life. Is there such a thing? 
  1985. A    Turning down the backlight won’t prevent screen burn. Screen burn can be prevented only by either shutting the system off or letting the PowerBook enter its native sleep mode.
  1986. In an RGB monitor the phosphor that illuminates each pixel is what causes screen burn. By setting the pixels to black (the phosphor isn’t active) or rapidly changing the colors of an RGB screen (as with a screen saver), you can prevent screen burn. While effective on an RGB display, setting the pixels to black may actually cause screen burn on a PowerBook. The reason is that all the 
  1987. PowerBooks have a liquid crystal display (LCD), which can be burned by white pixels, black pixels, or repeating patterns on the screen over a period of time. For this type of display the only good way to save the screen is to power it off.
  1988. Only the Power Manager has access to the chip that shuts the screen off. After a certain amount of time, the Power Manager makes the function calls to put the system to sleep. (These calls are documented in Chapter 31 of Inside Macintosh Volume VI.) At this time the Power Manager signals the chip to turn the screen off. There’s no direct interface between the user and the chip to achieve this. It’s best to let the PowerBook’s native screen-saving mechanism (sleep mode, which shuts off the screen) work as is. This also has the benefit of saving the precious battery power that would be used by the screen saver.
  1989. By the way, if your PowerBook screen has ghost images because you’ve left it on too long without going into sleep mode, letting the screen sleep or shutting down your computer for at least 24 hours will probably make the ghost images go away. Although there’s no hard and fast rule, usually ghost images caused by your system being on for less than 24 hours won’t be permanent if the screen is rested for an equal amount of time. Any ghost images caused by the system being on for greater than 24 hours may be permanent. 
  1990. Q    How can I call Connect in AppleTalk Remote Access without an existing ARA connection file created by the Remote Access application?
  1991. A    This isn’t directly possible, because without the ARA connection file your program becomes tied to the underlying link tool. The file was implemented so that in the future, when there are different link tools for the different link types, the program will know the link type and tool, plus associated link-specific data to use. To connect without the ARA connection file requires knowledge of the link tool data structures used by each individual link tool. Because these may change, your code may break.
  1992. However, there’s a roundabout way of calling Connect. It requires that you first establish a connection using a document created by the ARA application. Next, make the IsRemote call, setting the optionFlags to ctlir_getConnectInfo (see page 11 of the AppleTalk Remote Access Application Programming Interface Guide). This will cause the information necessary to create the remote connection (connectInfoPtr) to be returned. You would then save this connectInfo data in your application, and when you want to connect sometime later, you would pass this data to the Connect call (in the connectInfo field).
  1993. Q    When we allocate space for a new file using AllocContig with an argument in multiples of clump size, we should be grabbing whole clumps at a time so that file length (and physical EOF) will be a multiple of clump size. What happens if we truncate a file by
  1994.     moving the logical EOF somewhere inside a clump? Inside Macintosh says disk sectors are freed at the allocation block level, so we could have a file whose physical EOF isn’t a multiple of clump size, right? Does AllocContig guarantee that the new bytes added are contiguous with the end of the existing file, or only that the newly added bytes are contiguous among themselves? If the logical and physical EOFs aren’t the same, does AllocContig subtract the difference before grabbing the new bytes, or do we get the extra bytes (between EOFs) as a bonus? 
  1995. A    You can create a file whose physical size isn’t a multiple of the clump size, if you try. When the file shrinks, the blocks are freed at the allocation level, without regard for the clump size. Therefore, if you set the logical EOF to a smaller value, you can create a file of any physical length.
  1996. There’s no guarantee that the allocated bytes will be contiguous with the current end of the file. The decisions that file allocation makes are as follows:
  1997. •    It always attempts to allocate contiguously, regardless of whether you’re explicitly doing a contiguous allocation. (If it can’t, it fails rather than proceeding if doing an AllocContig.)
  1998. •    It always attempts to keep the added space contiguous with the existing space, but it will forgo this before it will fragment the current allocation request (regardless of whether you’re calling Allocate or AllocContig).
  1999. So these are the actions that file allocation will take:
  2000. 1.    Allocate contiguous space immediately after the current physical end of file.
  2001. 2.    Allocate contiguous space separated from the current physical EOF.
  2002. 3.    Fail here if allocating contiguously.
  2003. 4.    Allocate fragmented space, where the first fragment follows the physical EOF.
  2004. 5.    Allocate fragmented space somewhere on the volume.
  2005. You don’t get “extra” space with AllocContig. It just does a basic allocation but makes sure any added blocks are contiguous. PBAllocContig does not guarantee that the space requested will be allocated contiguously. Instead, it first grabs all the room remaining in the current extent, and then guarantees that the remaining space will be contiguous. For example, if you have a 1-byte file with a chunk size of 10K and you try to allocate 20K, 10K-1 bytes will be added to the current file; the remaining 10K+1 bytes are guaranteed to be contiguous. 
  2006. Q    Inside Macintosh says that ROM drivers opened with OpenDriver shouldn’t be closed. However, it seems that any driver opened with OpenDriver should be closed when the application is done. Should our application close the serial port after using it? 
  2007. A    As a general rule, applications that open the serial driver with OpenDriver should do so only when they’re actually going to use it, and they should close it when they’re done. (Note that it’s important to do a KillIO on all I/O before closing the serial port!) There are a couple of reasons for closing the port when you’re finished using it. First, it conserves power on the Macintosh portable models; while the serial port is open the SCC drains the battery. Second, closing the serial port avoids conflicts with other applications that use it. Inside Macintosh is incorrect in stating that you shouldn’t close the port after issuing an OpenDriver call.
  2008. Most network drivers shouldn’t be closed when an application quits, on the other hand, since other applications may still be accessing the driver.  
  2009. Q    We’ve tried to put old CDs to productive use. We use them for coasters, but you can only drink so many Mountain Dews at once. We’ve even resorted to using them for skeet-shooting practice. Can you suggest other good uses for my old CDs? 
  2010. A    It’s not well known that stunning special effects in some films, such as Terminator 2, were produced with the aid of compact disc technology. For example, the “liquid metal” effect used for the evil terminator was nothing more than 5000 remaindered Madonna CDs, carefully sculpted into the shape of an attacking android. And did you know that dropping a CD into a microwave oven for five seconds or so produces an incredible “lightning storm” effect? (Kids, don’t try this at home; we’re trained professionals.) For ideas of what you can do with old CDs, see the letter on page 5.
  2011. Q    I need to launch an application remotely. How do I do this? The Process Manager doesn’t seem to be able to launch an application on another machine and the Finder Suite doesn’t have a Launch Apple event. 
  2012. A    What you need to do is use the OpenSelection Finder event. Send an OpenSelection to the Finder that’s running on the machine you want to launch the other application on, and the Finder will resolve the OpenSelection into a launch of the application. 
  2013. As you can see if you glance at the OpenSelection event in the Apple Event Registry, there’s one difficulty with using it for remote launching: You have to pass an alias to the application you want to launch. If the machine you want to launch the application on is already mounted as a file server, this isn’t important, since you can create an alias to that application right at that moment. Or, if you’ve connected in the past (using that machine as a server) you can send a previously created alias and it will be resolved properly by the Finder on the remote machine.
  2014. However, if you want to launch a file without logging on to the other machine as a server, you’ll need to use the NewAliasMinimalFromFullPath routine in the Alias Manager. With this, you’ll pass the full pathname of the application on the machine you want to launch on, and the Alias Manager will make an alias to it in the same way it does for unmounted volumes. The obvious drawback here is that you’ll need to know the full pathname of the application — but there’s a price to pay for everything. The FinderOpenSel sample code on the Developer CD Series disc illustrates this use of the NewAliasMinimalFromFullPath routine. 
  2015. Q    When I try to link my driver in MPW 3.2, it tells me  
  2016. ### Link: Error : Output must go to exactly one segment when using 
  2017. "-rt" (Error 98)
  2018. ### Link: Errors prevented normal completion.
  2019. In all my source files I have #pragma segment Main {C} and SEG 'Main' {Asm} directives. Why is it doing this? What factors determine how segments are assigned (besides the #pragma stuff)? How can I get it to work?
  2020. A    The problem is probably that you’re including modules from the libraries that are marked for another segment. Usually the culprit here is that some of the routines in StdCLib or some other library are marked for the StdIO segment. You can generally fix this by using the -sg option to merge segments, either explicitly by naming all the segments you want to merge, or implicitly by just putting everything into one segment. You probably want to do the latter, because you only want one segment anyway. Thus, what you should do is add the option “-sg Main” to your link line in place of the “-sn Main=segment” option. This will merge all segments into the Main segment, making it possible to link.
  2021. Q    How do I count the number of items in a dialog without System 7’s CountDITL? My solutions are either messy or dangerous: (1) Fiddle with the dialog’s item list, (2) Try to find out which DITL the dialog used and read the count from the DITL resource, or (3) Repeatedly call GetDItem until garbage is returned. :-(  
  2022. A    It’s possible to use the CountDITL function with system software version 6.0.4 or later if the Macintosh Communications Toolbox is installed, because it’s included as a part of the Toolbox. It’s also possible, as you’ve found, to use the first two bytes of the DITL resource to get the number of items in the item list (see Inside Macintosh Volume I, page 427). If the handle to your DITL resource is defined as ditlHandl, for example, you can get at the number of items as follows:  
  2023. short        **ditlHandl;
  2024. ditlHandl = (short **)ditlRez;
  2025. itemcount = (**ditlHandl) + 1;
  2026. Q    How does Simple Player determine whether a movie is set to loop or not? Movie files that are set to loop seem to have a string of 'LOOP' at the end of the 'moov' resource. Does Simple Player check 'LOOP'? 
  2027. A    Simple Player identifies whether movies are set to loop by looking within the user data atoms for the 'LOOP' atom, as you’ve noticed. It’s a 4-byte Boolean in which a value of 1 means standard looping and a value of 0 means palindrome looping. Your applications should add the user data 'LOOP' atom to the end of the movie when a user chooses to loop. We recommend this method as a standard mechanism for determining the looping status of a movie. If the 'LOOP' atom doesn’t exist, there’s no looping. The calls you need to access this information are GetMovieUserData, GetUserData, AddUserData, and RemoveUserData, as defined in the Movie Toolbox chapter of the QuickTime documentation. For more information see the Macintosh Technical Note “Movies 'LOOP' Atom.”
  2028. Q    Calling SetFractEnable seems to force the width tables to be recalculated regardless of the setting of the low-memory global FractEnable. We’re calling this routine at a central entry point for any document, as it’s a document-by-document attribute. We then unconditionally call SetFractEnable(false) on exit back to the event loop, to be nice to other applications. Calling SetFractEnable(false) seems to trigger the recalculation even though FractEnable is false. What’s the best way to get around this? 
  2029. A    Your observation is correct. The SetFractEnable call stuffs the Boolean parameter (as a single byte) into the low-memory global $BF4 and indiscriminately invalidates the cached width table by setting the 4-byte value at $B4C (LastSpExtra, a Fixed value) to -1. Obviously, it wasn’t anticipated that SetFractEnable could be called regularly with a parameter that often doesn’t change the previous setting. (By the way, the same observation applies to SetFScaleDisable.)
  2030. In your case, you may want to keep track of the fractEnable setting in your application and avoid redundant SetFractEnable calls. (Note that it’s not a good idea to use the above insider information and poke at $BF4 and $B4C on your own!)
  2031. You don’t need to think of other applications when resetting fractEnable; it belongs to those low-memory globals that are swapped in and out during context switches to other applications.
  2032. Q    It looks as though the Event Manager routine PostHighLevelEvent could be (ab)used to send low-level messages, like phony mouse clicks and keystrokes. Would this work? 
  2033. A    No; unfortunately, this won’t work. A few reasons why:
  2034. •    The only applications that will receive high-level events (and their descendants, like Apple events) are applications that have their HLE bit set in their SIZE resource. If you try to send (or post) an HLE to an older application you’ll get an error from the PPC Toolbox telling you that there’s no port available.
  2035. •    There’s no system-level translator to convert these things. There are currently translators to change some Apple events. Specifically, the Finder will translate any “puppet string” event into puppet strings for non-System 7 applications (odoc, pdoc, and quit), but these are very special.
  2036. •    The only way to send user-level events such as mouse clicks through HLEs is to use the Apple events in the MiscStndSuite shown in the Apple Event Registry. And all those events assume that the receiving application will do the actual translations to user actions themselves.
  2037. •    HLEs come in through the event loop. So even if it were possible (through some very nasty patching to WaitNextEvent) to force an HLE into a non–HLE-aware application, the event would come in with an event code of 23 (kHighLevel) and the targeted application would just throw it away.
  2038. So the answer is that you can’t send user-level events to an HLE-aware application. If you want to drive the interface of an old application in System 7, you have to use the same hacky method you used under all previous systems. This, by the way, is one of the main reasons why MacroMaker wasn’t revised for System 7. Apple decided that it wasn’t supportable and that we would wait for applications to update to System 7 and take advantage of third-party Apple event scripting systems.
  2039. Q    What’s the recommended method for allowing an AppleTalk node to send packets to itself using AppleTalk’s self-send mode (intranode delivery), assuming customers are running various versions of AppleTalk? There used to be a control panel called SetSelfSend that would turn on AppleTalk self-send mode at startup time. Should we use that control panel or should we use the PSetSelfSend function in our program to set the self-send flag ourselves? 
  2040. A    AppleTalk self-send mode requires AppleTalk version 48 or greater. You can check the AppleTalk version with Gestalt or SysEnvirons. All Macintosh models except for the Macintosh XL, 128, 512, and Plus have AppleTalk version 48 or greater in ROM.
  2041. The SetSelfSend control panel is still available on the Developer CD Series disc (Tools & Apps:Intriguing Inits/cdevs/DAs:Pete’s hacks-Moof!:SetSelfSend). However, we don’t recommend it as a solution if you need to use self-send mode in your program. Instead, you should use the PSetSelfSend function to turn self-send mode on with your program.
  2042. AppleTalk’s self-send mode presents a problem. Any changes made to the state of self-send will affect all other programs that use AppleTalk. That is, self-send mode is global to the system. Because of this, programs using self-send should follow these guidelines:
  2043. •    If you need self-send for only a brief period of time (for example, to perform a PLookupName on your own node), you should turn it on with PSetSelfSend (saving the current setting returned in oldSelfFlag), make the call(s) that require self-send, and restore self-send to its previous state.
  2044. •    If you need self-send for an extended period of time (for example, the life of your application) in which your program will give up time to other programs, you should turn self-send on and leave it on — do not restore it to its previous state! Since other programs running on your system (that aren’t well-behaved) may turn off self-send at any time, programs that require self-send should periodically check to make sure it’s still on with either PSetSelfSend or PGetAppleTalkInfo. Apple’s system software has no compatibility problems with self-send — that is, it doesn’t care if it’s on or off — so leaving it on won’t hurt anything. 
  2045. Q    In a version 2 picture, the picFrame is the rectangular bounding box of the picture, at 72 dpi. I would like to determine the bounding rectangle at the stored resolution or the resolution itself. Is there a way to do this without reading the raw data of the PICT resource itself? A    With regular version 2 PICTs (or any pictures), figuring out the real resolution of the PICT is pretty tough. Applications use different techniques to save the information. But if you make a picture with OpenCPicture, the resolution information is stored in the headerOp data, and you can get at this by searching for the headerOp opcode in the picture data (it’s always the second opcode in the picture data, but you still have to search for it in case there are any zero opcodes before it). Or you can use the Picture Utilities Package to extract this information.
  2046. With older picture formats, the resolution and original bounds information is sometimes not as obvious or easily derived. In fact, in some applications, the PICT’s resolution and original bounds aren’t stored in the header, but rather in the pixel map structure(s) contained within the PICT.
  2047. To examine these pixMaps, you’ll first need to install your own bitsProc, and then manually check the bounds, hRes, and vRes fields of any pixMap being passed. In most cases the hRes and vRes fields will be set to the Fixed value 0x00480000 (72 dpi); however, some applications will set these fields to the PICT’s actual resolution, as shown in the code below. 
  2048. Rect            gPictBounds;
  2049. Fixed        gPictHRes, gPictVRes;
  2050.  
  2051. pascal void ColorBitsProc (srcBits, srcRect, dstRect, mode, 
  2052.     maskRgn)
  2053. BitMap        *srcBits;
  2054. Rect            *srcRect, *dstRect;
  2055. short        mode;
  2056. RgnHandle    maskRgn;
  2057. {
  2058.     PixMapPtr    pm;
  2059.     pm = (PixMapPtr)srcBits;
  2060.     gPictBounds = (*pm).bounds;
  2061.     gPictHRes = (*pm).hRes;        /* Fixed value */
  2062.     gPictVRes = (*pm).vRes;        /* Fixed value */
  2063. }
  2064. void FindPictInfo(picture)
  2065. PicHandle    picture;
  2066. {
  2067.     CQDProcs        bottlenecks;
  2068.     SetStdCProcs (&bottlenecks);
  2069.     bottlenecks.bitsProc = (Ptr)ColorBitsProc;
  2070.     (*(qd.thePort)).grafProcs = (QDProcs *)&bottlenecks;
  2071.     DrawPicture (picture, &((**picture).picFrame));
  2072.     (*(qd.thePort)).grafProcs = 0L;
  2073. }
  2074. Q    The code I added to my application’s MDEF to plot a small icon in color works except when I hold the cursor over an item with color. The color of the small icon is wrong because it’s just doing an InvertRect. When I drag over the Apple menu, the menu inverts behind the icon but the icon is untouched. Is this done by brute force, redrawing the small icon after every InvertRect?  
  2075. A    The Macintosh system draws color icons, such as the Apple icon in the menu bar, every time the title has to be inverted. First InvertRect is called to invert the menu title, and then PlotIconID is called to draw the icon in its place. The advantage of using PlotIconID is that you don’t have to worry about the depth and size of the icon being used. The system picks the best match from the
  2076.     family whose ID is being passed, taking into consideration the target rectangle and the depth of the device(s) that will contain the icon’s image.
  2077. The Icon Utilities call PlotIconID is documented in the Macintosh Technical Note “Drawing Icons the System 7 Way” (formerly #306); see this Note for details on using the Icon Utilities calls. 
  2078. Q    The cursor flashes when the user types in TextEdit fields in my Macintosh application. This is done in TEKey. I notice that most programs hide the cursor once a key is pressed. I don’t care for this because then I have to move the mouse to see where I am. Is this a typical fix for this problem and an accepted practice? 
  2079. A    There’s very little you can do to avoid this. The problem is that every time you draw anything to the screen, if the cursor’s position intersects the rectangle of the drawing being done, QuickDraw hides the cursor while it does the drawing, and then shows it again to keep it from affecting the image being drawn beneath it. Every time you enter a character in TextEdit, the nearby characters are redrawn. Usually this is invisible because the characters just line up on top of their old images, but if the cursor is nearby and visible, it will flicker while it’s hidden to draw the text. This is why virtually all programs call ObscureCursor when the user types. Also, most users don’t want the image of the cursor obscuring text they might be referring to, yet they don’t want to have to move it away and then move it back to make selections. Because it’s so commonplace, hiding the cursor probably won’t bother your users; in fact, they might very well prefer the cursor hidden. This, combined with the fact that there’s very little you can do to help the flickering, suggests that you should obscure the cursor while the user types.
  2080. Q    We’re using Apple events with the PPC Toolbox. We call StartSecureSession after PPCBrowser to authenticate the user’s identity. The user identity dialog box is displayed and everything looks good. However, in the first AESend call we make, the user identity dialog is displayed again. (It isn’t displayed after that.) Why is this dialog being displayed from AESend when I’ve already authenticated the user identity with StartSecureSession? 
  2081. A    First, a few PPC facts:
  2082. •    When a PPC session is started, StartSecureSession lets the user authenticate the session (if the session is with a program on another Macintosh) and returns a user reference number for that connection in the userRefNum field of the PPCStartPBRec. That user reference number can be used to start another connection (using PPCStart instead of StartSecureSession) with the same remote Macintosh, bypassing the authentication dialogs.
  2083. •    User reference numbers are valid until either they’re deleted with the DeleteUserIdentity function or one of the Macintosh systems is restarted.
  2084. •    If the name and password combination used to start a session is the same as that of the owner of the Macintosh being used, the user reference number returned refers to the default user. The default user reference number normally is never deleted and is valid for connections to the other Macintosh until it’s deleted with DeleteUserIdentity or one of the Macintosh systems is restarted.
  2085. With that out of the way, here’s how user reference numbers are used when sending high-level events and Apple events: When you first send a high-level event or an Apple event to another Macintosh, the code that starts the session with the other system doesn’t attempt to use the default user reference number or any other user reference number to start the session, and it doesn’t keep the user reference number returned to it by StartSecureSession. The session is kept open for the life of the application, or until the other side of the session or a network failure breaks the connection.
  2086. When you started your PPC session, StartSecureSession created a user reference number that could be used to start another PPC session without authentication. However, the Event Manager knows nothing of that user reference number, so when you send your first Apple event, the Event Manager calls StartSecureSession again to authenticate the new session. Since there isn’t any way for you to pass the user reference number from the PPC session to the Event Manager to start its session, there’s nothing you can do about this behavior. 
  2087. Q    How can I make my ImageWriter go faster? 
  2088. A    To make your ImageWriter go blazingly fast, securely tie one end of a 12-foot nylon cord around the printer and the other end around your car’s rear axle. If your car has a manual transmission, hold the clutch in and race your car’s engine until the tachometer is well into the red zone. Slip the clutch and off you go! If your car has an automatic transmission, you can approach the same results by leaving plenty of slack in the rope before peeling out. 
  2089. KON & BAL’S PUZZLE PAGE 
  2090. A MICRO BUG
  2091. KONSTANTIN OTHMER AND BRUCE LEAK 
  2092. See if you can solve this programming puzzle, presented in the form of a dialog between Konstantin Othmer (KON) and Bruce Leak (BAL). The dialog gives clues to help you. Try to guess this one before BAL does. To figure out your score, see “Scoring” at the end. 
  2093. KON    Have you heard of Spaceward Ho!?
  2094. BAL    Yeah, it’s that awesome conquer-the-galaxy game from Delta Tao. That game has done more to hurt productivity around here than pinball. 
  2095. KON    After they released it, they got several calls complaining about a crash. They tried to reproduce the crash but couldn’t.
  2096. BAL    They don’t have that SADE MultiFinder installed, do they?
  2097. KON    Very funny.
  2098. BAL    How is their configuration different from the configuration of customers with the problem?
  2099. KON    Everyone who complained had a 4-meg IIsi, ci, or fx. And the Delta Tao folks tested those configurations.
  2100. BAL    Hmmm. How does it crash? Can you get into MacsBug? 
  2101. KON    That’s part of the problem, the customers who have the crash aren’t programmers and don’t have MacsBug. The crash is with an Error 01, a bus error.
  2102. BAL    Well, find one of the machines it crashes on, install MacsBug, and see what’s wrong. How hard can it be?
  2103. KON    So you fly to Bismarck, North Dakota, and install MacsBug, and it doesn’t crash anymore. Pretty hard, I guess.
  2104. BAL    Hmmm. Just MacsBug? Are there any INITs running?
  2105. KON    The machine has only MacsBug, nothing else.
  2106.  
  2107. BAL    And you never set a breakpoint, or an A-trap break, or anything?
  2108. KON    Nope.
  2109. BAL    Do you have a FirstTime macro?
  2110. KON    Nope.
  2111. BAL    So how could MacsBug be interfering? 
  2112. KON    I can’t help you there. It’s your puzzle.
  2113. BAL    Well, MacsBug initializes some low-memory values and rearranges things above BufPtr. Is the app doing anything funny that might depend on some low mems?
  2114. KON    The app follows every programming convention dictated by Inside Macintosh and the Developer Support Center. They even follow every human interface guideline and . . .
  2115. BAL    Yeah, yeah, yeah. Impossible. So MacsBug is installed, but it’s never invoked.
  2116. KON    Yep.
  2117. BAL    What’s the app doing when it crashes?
  2118. KON    It’s in the middle of a bunch of calculations — you know, how many ships got destroyed in battle, how fast planets’ populations are growing, what the computer players are doing, that kind of thing.
  2119. BAL    Well, MacsBug causes the app to launch in a different place.
  2120. KON    OK.
  2121. BAL    MacsBug loads above BufPtr, so everything else loads lower. Maybe the app reads past the end of its heap. When MacsBug is in, it’s lower in the heap, so the app reads somewhere in MacsBug territory. When MacsBug is out, the app reads past the end of RAM and causes a bus error.
  2122. KON    Nice theory. But how do you verify that that’s the problem without MacsBug?
  2123. BAL    Launch another app first.
  2124. KON    Then the Ho! will load even lower in memory. It won’t crash.
  2125. BAL    Use MicroBug. 
  2126. KON    You mean that thing that comes up when you push the NMI switch and MacsBug isn’t installed? Where is that documented?
  2127. BAL    I don’t know. It can’t be too hard to figure it out, though.
  2128. KON    Well, the only command I know is G for “Go.” What else will it let me do?
  2129.  
  2130. BAL    You can look at memory and registers, you can set the PC, and you can even exit to the shell. Let’s try a Total Display, TD. MicroBug responds with this: 
  2131. 000C30  0000 0000 0074 0000  FFFF 0100 0000 00C4
  2132. 000C40  0000 FFFF 0000 0000  00AD E5D7 0074 0000
  2133. 000C50  006E B2D0 0074 0A80  006E 9EB8 0057 0308
  2134. 000C60  0000 0000 0074 0BAC  006E 49F8 006E 49E0
  2135. 000C70  000A D96A 2014 0000  0000 0000 0000 0000
  2136. 000C80  0000 0000 5444 0020  0020 0020 0020 0020
  2137. KON    It looks like it’s dumping memory from C30.
  2138. BAL    Yeah, from SysEqu.a we see that C30 is SEVarBase. The system exception vars go up to CBF. I guess that’s where the exception vectors dump the processor state when an exception occurs.
  2139. KON    Since the system sets up the SEVars, they’re set up on any exception regardless of the debugging environment. Using MacsBug, we can figure out that the first two lines are registers D0-D7, the next two lines are 
  2140. A0-A7, then the PC, then the status register, then what?
  2141. BAL    I don’t know, but at C84, it looks like what we typed: TD.
  2142. KON    You could read a book written in ASCII!
  2143. BAL    Let’s try something else, maybe it can do math. Let’s try DM PC-10.
  2144. KON    It works.
  2145. BAL    Yeah. In addition to the PC, it knows registers as RA0 or RD0 (but you set registers with a line like D0 = 5, not RD0 = 5). You can set memory using SM.
  2146. KON    Anyway, back to the Ho!
  2147. BAL    So in the Ho! I can look at the PC and the registers and figure out that it’s looking past the end of memory.
  2148. KON    You can’t do an IL or an IP, so you can’t prove that bogus values in a register are causing the bus error. 
  2149. BAL    I go into MacsBug on my PowerBook and disassemble the code with the DH command. 
  2150. KON    How do you find the problem code in the source?
  2151. BAL    I pattern-match using the Find command on the PowerBook. Once I find the problem in MacsBug on the PowerBook, I’m golden.
  2152. KON    Right! Here’s the scoop: One of their pointers got messed up and they were reading off the end of their heap. The value they read had only a minor impact on the calculations, so no one noticed the problem. When MacsBug 
  2153. was in, they were reading in MacsBug’s code space, which is a valid address and didn’t cause a bus error. The reason it was reported on 4-meg IIsi’s, ci’s, and fx’s is that only ’030 or ’040 machines that have the ci-class ROM cause bus errors when reading a valid RAM address that doesn’t have RAM installed. 
  2154. BAL    And reading off the end of RAM on an 8-meg machine in 24-bit addressing mode just reads the ROM, which is valid.
  2155. KON    Instead of this MicroBug detour, you could just write a flag value on the screen from various interesting places in the source. The flag value when you crash tells you where you were last. 
  2156. BAL    Yeah, but that’s been done before. And it doesn’t give us a good excuse to discuss MicroBug.
  2157. KON    OK, Mr. MicroBug, what’s the fewest keystrokes you can use to do an ExitToShell from MicroBug?
  2158. BAL    Well, ExitToShell is Toolbox trap A9F4. The Toolbox trap table begins at $E00, so you can calculate the address of the trap and then use the G command.
  2159. KON    Once you have the address, that’s a minimum of seven keystrokes. You like to type a lot.
  2160. BAL    I need some time to think about that one.
  2161. KON    While you’re thinking, how do you restart from MicroBug?
  2162. BAL    Let’s just leave everyone in suspense until next time.
  2163. KON    Nasty.
  2164. BAL    Yeah. 
  2165. INDEX    A
  2166. AccessContainedObjects, TAppleObjectDispatcher and  75
  2167. AddResource, MakeStandAlone tool and  107
  2168. AEDisposeToken, Apple events and  68
  2169. 'aedt' resource, UAppleObject and  77–78
  2170. AESend, Macintosh Q & A  122, 132–133
  2171. Alexander, Pete  84
  2172. aliases, Macintosh Q & A  122–123
  2173. Alias Manager, Macintosh Q & A  122–123
  2174. AllocContig, Macintosh Q & A  124–125
  2175. animation  53–57
  2176. “Another Take on Globals in Standalone Code” (Rollin)  89–115
  2177. Apple Event Manager, Apple events and  59, 60–61, 62–64
  2178. Apple event object model, objects and  58–83
  2179. “Apple Event Objects and You” (Clark), correction to  6
  2180. Apple Event Registry  66–67
  2181. Apple events
  2182. Macintosh Q & A  122, 126–127, 132–133
  2183. objects and  58–83
  2184. Apple menu, Macintosh Q & A  131–132
  2185. AppleTalk, Macintosh Q & A  129–130
  2186. AppleTalk Filing Protocol (AFP), Macintosh Q & A  122–123
  2187. AppleTalk Remote Access, Macintosh Q & A  124
  2188. application parameters, global variables and  92    artificial life, Johnson ponders  116–119
  2189. Artificial Life III (Santa Fe, NM)  116
  2190. assembly language, components and C++ classes compared  40
  2191. B
  2192. backlight, Macintosh Q & A  123–124
  2193. battery, Macintosh Q & A  123–124
  2194. “Be Our Guest” (Van Brink)  37–40
  2195. Berdahl, Eric M.  58
  2196. “Better Apple Event Coding Through Objects” (Berdahl)  58–83
  2197. BlockMove, MakeStandAlone tool and  105
  2198. C
  2199. C
  2200. components and C++ classes compared  40
  2201. Macintosh Q & A  121
  2202. C++
  2203. Apple events and  58–83
  2204. Macintosh Q & A  121
  2205. C++ classes, components compared to  37–40
  2206. CalcCMask, Macintosh Q & A  120
  2207. CalcMask, Macintosh Q & A  120
  2208. CalculateOffset, StART system and  101, 112
  2209. callbacks, time bases and  49–52
  2210. CallComponentFunction, components and  17, 20, 30
  2211. CallComponentFunctionWith-Storage, components and  17, 20, 30
  2212. CallMeWhen, time bases and  50, 51    
  2213.  
  2214. CallProcPtr, MakeStandAlone tool and  104
  2215. can do function, components and  12
  2216. CaptureComponent, Math component and  25
  2217. CDs, Macintosh Q & A  126
  2218. Clark, Richard  6
  2219. classes
  2220. Apple events and  68–70, 79–83
  2221. C++  37–40
  2222. CloseA5World, global variables and  96
  2223. CloseComponent, components and  20, 22, 28
  2224. CloseComponentResFile, components and  30
  2225. close function, components and  12
  2226. clumps, Macintosh Q & A  124–125
  2227. color, Macintosh Q & A  131–132
  2228. color tables, Macintosh Q & A  121
  2229. CompareAppleObjects, MAppleObject and  72
  2230. CompareObjects, TAppleObjectDispatcher and  76
  2231. ComponentCallNow, Math component and  16–17
  2232. ComponentFunctionImplemented, Math component and  25
  2233. Component Manager
  2234. components and  7–36
  2235. components and C++ classes compared  37–40
  2236. time bases and  45
  2237. Component Registry group (Apple Computer, Inc.)  10
  2238. components
  2239. C++ classes compared to  37–40
  2240. writing and debugging  7–36    ComponentSetTarget, Math component and  25
  2241. Connect, Macintosh Q & A  124
  2242. ConvertAppToStandAloneCode, MakeStandAlone tool and  102, 103, 107
  2243. CopyBits, animation and  54, 55, 56, 57
  2244. CopyDeepMask, print hint  84
  2245. CopyHostQD, StARTGlue.a.o and  110–111
  2246. CopyMask
  2247. Macintosh Q & A  120
  2248. print hint  84
  2249. CouldAlert, Macintosh Q & A  120
  2250. CouldDialog, Macintosh Q & A  120
  2251. CountContainedObjects, MAppleObject and  71–72
  2252. CountDITL, Macintosh Q & A  127–128
  2253. CountObjects, TAppleObjectDispatcher and  75–76
  2254. CPlusTESample, Apple events and  78–79
  2255. CreateResFile, MakeStandAlone tool and  106
  2256. CurResFile, components and  30
  2257. cursor, Macintosh Q & A  131–132
  2258. D
  2259. Darwin, Charles Robert  117–118
  2260. data hiding, components and C++ classes compared  38
  2261. debugging, components and  7–36
  2262. declarations, components and C++ classes compared  37–38
  2263. Delta Tao  134
  2264. Dialog Manager, Macintosh Q & A  120
  2265. dialogs, Macintosh Q & A  127–128    dispatcher, components and  13, 17–19
  2266. DisposeHandle, MakeStandAlone tool and  106
  2267. DisposeToken, TAppleObjectDispatcher and  76
  2268. DITL resource, Macintosh Q & A  127–128
  2269. DoAdd, MoMath and  23
  2270. DoAppleEvent, MAppleObject and  72–73
  2271. DoDivide, Math component and  16, 17, 19, 22, 24, 25
  2272. DoMultiply, Math component and  16, 24, 25
  2273. DoneWithGlobals, StART system and  100, 101, 111
  2274. drivers, Macintosh Q & A  125–126, 127
  2275. DTS.Draw, animation and  57
  2276. E
  2277. EnslaveMovies, time bases and  48
  2278. Entry, StART system and  101
  2279. EOFs, Macintosh Q & A  124–125
  2280. ErrorExit, MakeStandAlone tool and  102, 103, 104, 106
  2281. Event Manager, Macintosh Q & A  129
  2282. evolution, Johnson ponders  117–118, 119
  2283. exception handling, UAppleObject and  70
  2284. ExtractObject, TAppleObjectDispatcher and  75
  2285. F
  2286. “Fast Component Dispatch” (Krueger)  20
  2287. FillChar, MakeStandAlone tool and  105    
  2288.  
  2289. Finder
  2290. animation and  53
  2291. Macintosh Q & A  126–127
  2292. MakeStandAlone tool and  106
  2293. FindNextComponent, components and  20, 28, 30
  2294. FlipPieces, time bases and  50–51
  2295. FractEnable, Macintosh Q & A  128
  2296. FrameRect, animation and  53–54
  2297. FreeAlert, Macintosh Q & A  120
  2298. FreeDialog, Macintosh Q & A  120
  2299. G
  2300. GDevices, animation and  54, 55, 56
  2301. “genetic takeover,” Johnson ponders  118
  2302. GetAppleClass, MAppleObject and  71
  2303. GetComponentInfo, time bases and  45
  2304. GetComponentInstanceA5, components and  29
  2305. GetComponentRefcon, components and  29, 30
  2306. GetContainedObject, MAppleObject and  72
  2307. GetDefaultAppleObject, MAppleObject and  73
  2308. GetDispatcher, TAppleObjectDispatcher and  77
  2309. GetDItem, Macintosh Q & A  127–128
  2310. GetMovieTimeBase, time bases and  45
  2311. GetSAA5, StART system and  101, 111–112
  2312. GetTarget, TAppleObjectDispatcher and  76    GetTimeBaseFlags, time bases and  46–47
  2313. GetTimeBaseMasterClock, time bases and  45
  2314. GetTimeBaseMasterTimeBase, time bases and  45
  2315. GetTokenObjectDisposal, TAppleObjectDispatcher and  76
  2316. GetWindowIndex, correction to  6
  2317. global variables, MPW and  89–115
  2318. GoToBeginningOfMovie, time bases and  49
  2319. GotRequiredParameters, MAppleObject and  73
  2320. “Graphical Truffles” (Lee)  53–57
  2321. GWorlds, animation and  54
  2322. H
  2323. HandleAppleEvent, TAppleObjectDispatcher and  75
  2324. I
  2325. icons, Macintosh Q & A  131–132
  2326. imageable area, print hint  86–87
  2327. ImageWriter, Macintosh Q & A  133
  2328. implementation, components and C++ classes compared  39–40
  2329. inheritance, components and C++ classes compared  38–39
  2330. InitAppleObject, MAppleObject and  73
  2331. InitGraf, OpenA5World and  97
  2332. Install, TAppleObjectDispatcher and  74–75
  2333. InstallAppleEventHandler, TAppleObjectDispatcher and  77
  2334. InvertRect, Macintosh Q & A  131–132    J
  2335. Johnson, Dave  116
  2336. K
  2337. King, Casey  7–8
  2338. “KON & BAL’s Puzzle Page” (Othmer and Leak)  134–137
  2339. Krueger, Mark  20
  2340. L
  2341. Lamarckian evolution, Johnson ponders  117–118, 119
  2342. Lamarck, Jean-Baptiste-Pierre-Antoine de Monet de  117–118, 119
  2343. Laser Prep, print hint  87
  2344. LaserWriter, print hint  84, 85
  2345. Launch Apple event, Macintosh Q & A  126–127
  2346. Leak, Bruce  134
  2347. Lee, Edgar  53
  2348. LISP, components and C++ classes compared  40
  2349. 'LOOP', Macintosh Q & A  128
  2350. M
  2351. MABuild, Macintosh Q & A  121
  2352. MacApp, Macintosh Q & A  121
  2353. Macintosh Operating System
  2354. components and C++ classes compared  40
  2355. standalone code and  89–90
  2356. Macintosh Q & A  120–133
  2357. Macintosh Toolbox, Macintosh Q & A  123–124
  2358. MacsBug
  2359. components and  32–33
  2360. KON & BAL puzzle  134, 135, 136–137
  2361. MakeStandAlone tool, StART system and  98, 100, 102–107, 108, 109
  2362. MAppleObject, Apple events and  61, 68, 69, 70, 71–73    
  2363.  
  2364. “marching ants” effect, animation and  53–54
  2365. Math component  16–26
  2366. MCDoAction, time bases and  46
  2367. MCMovieChanged, time bases and  46
  2368. md, print hint  87
  2369. MDEF, Macintosh Q & A  131–132
  2370. “memes,” Johnson ponders  118
  2371. messages, Macintosh Q & A  129
  2372. MicroBug, KON & BAL puzzle  135, 136, 137
  2373. MoMath, Math component and  22–23
  2374. 'moov' resource, Macintosh Q & A  128
  2375. movies
  2376. Macintosh Q & A  128
  2377. QuickTime and  41–52
  2378. MoviesTask, time bases and  51
  2379. Movie Toolbox, time bases and  41–52
  2380. MPW, global variables and  89–115
  2381. MPW 3.2, Macintosh Q & A  127
  2382. multilayer off-screen worlds, animation and  55–57
  2383. N
  2384. NewCallBack, time bases and  49, 50, 52
  2385. NewGWorld, animation and  54, 55
  2386. NewHandle, MakeStandAlone tool and  104
  2387. NewPtr, Macintosh Q & A  122
  2388. NuMath, Math component and  24, 25, 26
  2389. NuMathComponent, Math component and  24
  2390. O
  2391. object-oriented programming, Apple events and  60–64    objects, Apple events and  58–83
  2392. Object Support Library (OSL), Apple events and  61–64, 67–68
  2393. off-screen drawing, animation and  54–55
  2394. off-screen graphics worlds, Macintosh Q & A  121
  2395. OpenA5World, global variables and  94–97, 112–114
  2396. OpenComponent, components and  20, 21, 28, 29
  2397. OpenComponentResFile, components and  30
  2398. OpenDriver, Macintosh Q & A  125–126
  2399. open function, components and  12
  2400. OpenResFile, MakeStandAlone tool and  102, 106
  2401. Ortiz, Guillermo A.  41–42
  2402. Othmer, Konstantin  134
  2403. P
  2404. PenMode, animation and  53–54
  2405. PenPat, animation and  53–54
  2406. Persist.p, StART system and  98–99, 100–101
  2407. PICT resource, Macintosh Q & A  130–131
  2408. pictures
  2409. Macintosh Q & A  121, 130–131
  2410. print hint  85–86
  2411. PostHighLevelEvent, Macintosh Q & A  129
  2412. PPCBrowser, Macintosh Q & A  132–133
  2413. PPC Toolbox, Macintosh Q & A  132–133
  2414. “Print Hints” (Alexander)  84–88
  2415. printing, print hints  84–88
  2416. Printing Manager, print hint  85–86
  2417. Process Manager, Macintosh Q & A  126–127    PSetSelfSend, Macintosh Q & A  129–130
  2418. Puzzle Page  134–137
  2419. Q
  2420. Q & A, Macintosh  120–133
  2421. QuickDraw
  2422. animation and  55, 56
  2423. global variables and  92, 97
  2424. QuickTime 1.0, components and  7–36
  2425. QuickTime 1.5  41–52
  2426. R
  2427. RegisterComponent, components and  16
  2428. RegisterComponentResource, components and  16
  2429. register function, components and  13
  2430. Reinstaller, components and  35–36
  2431. ReleaseResource, OpenA5World and  96
  2432. RememberA0, global variables and  92–93
  2433. ResEdit, MakeStandAlone tool and  106
  2434. ResolveSpecifier, TAppleObjectDispatcher and  77
  2435. RestoreA4, global variables and  93
  2436. RmveResource, MakeStandAlone tool and  106
  2437. Rollin, Keith  89
  2438. ROM drivers, Macintosh Q & A  125–126
  2439. S
  2440. scripting, Apple events and  58–83
  2441. Segment Loader, global variables and  91, 94
  2442. segments, Macintosh Q & A  127    
  2443.  
  2444. serial port, Macintosh Q & A  125–126
  2445. server volumes, Macintosh Q & A  122–123
  2446. SetA5, MakeStandAlone tool and  104
  2447. SetComponentRefcon, components and  29
  2448. SetDefaultAppleObject, MAppleObject and  73
  2449. SetFractEnable, Macintosh Q & A  128
  2450. SetMovieMasterClock, time bases and  44
  2451. SetMovieRate, time bases and  46
  2452. SetMovieTime, time bases and  44
  2453. SetOrigin, print hint  85
  2454. SetResAttrs, MakeStandAlone tool and  107
  2455. SetSelfSend, Macintosh Q & A  129–130
  2456. SetTBLoop, time bases and  46–47
  2457. SetTimeBaseFlags, time bases and  46–47
  2458. SetTimeBaseMasterClock, time bases and  44
  2459. SetTimeBaseTime, time bases and  44
  2460. SetTokenObjectDisposal, TAppleObjectDispatcher and  76
  2461. SetupA4, global variables and  92–93
  2462. ShiftMoviePieces, time bases and  51
  2463. Simple Player, Macintosh Q & A  128
  2464. Spaceward Ho! (Delta Tao), KON & BAL puzzle  134–137
  2465. SplitMovie, time bases and  51
  2466. spool-a-page, print-a-page method, print hint  84–85
  2467. srcCopy transfer mode, animation and  56    srcXor transfer mode, animation and  53–54
  2468. standalone code, MPW and  89–115
  2469. StARTGlue.a.o, StART system and  100, 101, 105, 107–112
  2470. StART system, global variables and  97–114
  2471. StartMovie, time bases and  46, 49
  2472. StartSecureSession, Macintosh Q & A  132–133
  2473. StuffDescriptor, TAppleObjectDispatcher and  75
  2474. Symantec  89
  2475. symbolic debugging, components and  31–32
  2476. System 7, Macintosh Q & A  120, 127–128
  2477. System 7.1, components and  7–36
  2478. T
  2479. TAppleObjectDispatcher, UAppleObject and  73–77
  2480. TArea, Apple events and  66
  2481. target function, components and  13
  2482. “Techniques for Writing and Debugging Components” (Woodcock and King)  7–36
  2483. TEditText, Apple events and  79–83
  2484. TEKey, Macintosh Q & A  132
  2485. TextEdit, Macintosh Q & A  132
  2486. thing dcmd, components and  32–33
  2487. Things! control panel, components and  33–35
  2488. THINK solution, global variables and  92–94, 112–114
  2489. 32-Bit QuickDraw, animation and  54
  2490. TImage, Apple events and  66
  2491. time bases, QuickTime and  41–52    TimeBaseSimple, time bases and  44–47
  2492. TimeBaseSlave, time bases and  47–52
  2493. “Time Bases: The Heartbeat of QuickTime” (Ortiz)  41–52
  2494. Time Manager, time bases and  41
  2495. TPixel, Apple events and  66
  2496. TScanLine, Apple events and  66
  2497. U
  2498. UAppleObject, Apple events and  61, 62, 70–78
  2499. UnionRect, animation and  55
  2500. UseGlobals, StART system and  100, 101, 102, 109–110
  2501. UseResFile, components and  30
  2502. user identity dialog box, Macintosh Q & A  132–133
  2503. V
  2504. ValidateCode, MakeStandAlone tool and  103–104
  2505. Van Brink, David  37
  2506. version function, components and  12
  2507. “Veteran Neophyte, The” (Johnson)  116–119
  2508. volumes, Macintosh Q & A  122–123
  2509. W, X, Y, Z
  2510. width tables, Macintosh Q & A  128
  2511. Woodcock, Gary  7–8
  2512. WriteRectToken, correction to  6
  2513. WriteResource, MakeStandAlone tool and  107    
  2514.  
  2515. WANT TO WRITE FOR develop?
  2516. YOUR NAME AND ELECTRONICALLY RETOUCHED
  2517. PHOTO HERE    We’re always looking for people who might be interested in writing an article or a column for develop. If you’d like to take advantage of this opportunity to spotlight and distribute your code to thousands of developers of Apple products, with a result that you’ll be proud to show your colleagues (and Mom), please read on.
  2518. WHAT TO WRITE
  2519. Think about writing an article like the ones you see in this issue, usually ranging from 6 to 30 pages in length, or just a short column (say, 2 to 4 pages). Typically you’ll expound on source code that readers will get on the Developer CD Series disc.
  2520. We encourage authors to write in a light, humorous style; we’ll try to refrain from editing out your jokes!
  2521. WHO AND WHAT CAN HELP YOU
  2522. A content editor and technical editor will work with you on your article, and an illustrator will work on any illustrations. A review board will give feedback on your first draft, and numerous technical reviewers will look for errors. Once things come together in the final draft, a copyeditor will go over it all.
  2523. Not only will you have an opportunity to review your article at several stages, we rely on you to answer questions and in general to review all changes carefully.
  2524. WHAT TO DO NEXT
  2525. Send an abstract and an outline to AppleLink DEVELOP, or to Caroline Rose, Apple Computer, Inc., 20525 Mariani Avenue, M/S 75-2B, Cupertino, CA 95014. We can send you our Author’s Guidelines along with information about timing and the scoop on our generous incentive program.
  2526. So don’t just sit on those great ideas of yours . . . send ’em along to us!    
  2527.  
  2528. HOW'RE WE DOING?
  2529. We'd love to hear how you feel about develop. If you have any questions, suggestions, or even gripes, please don't keep them to yourself. (Be sure to include your name, company name, address, and phone number.)
  2530. Send editorial suggestions or comments to AppleLink DEVELOP or to:
  2531. Caroline Rose
  2532. Apple Computer, Inc.
  2533. 20525 Mariani Avenue, M/S 75-2B
  2534. Cupertino, CA  95014
  2535. AppleLink:  CROSE
  2536. Internet:  crose@applelink.apple.com
  2537. Fax:  (408)974-7084
  2538.     Send technical questions about develop to:
  2539. Dave Johnson
  2540. Apple Computer, Inc.
  2541. 20525 Mariani Avenue, M/S 75-2B
  2542. Cupertino, CA  95014
  2543. AppleLink:  JOHNSON.DK
  2544. Internet:  dkj@apple.com
  2545. CompuServe:  75300,715
  2546. Fax:  (408)974-7084
  2547.     
  2548. WANT TO SUBSCRIBE? CHANGE OF ADDRESS? SUBSCRIPTION QUERIES?
  2549. For all your subscription-related needs AppleLink DEV.SUBS.
  2550. WANT TO WRITE FOR develop?
  2551. If you'd like to contribute an article or column to develop, please see the previous page.
  2552. BACK ISSUES OF develop are on the Developer CD Series disc. To get printed back issues, send $13 per issue in the U.S. (or $20 outside the U.S.) to:  develop, Apple Computer, Inc., P.O. Box 531, Mount Morris, IL  61054-7858, U.S.A.
  2553. Issue 1  Realistic Color for Real-World Applications; The Palette Manager; Offscreen Worlds; Perils of PostScript; Compatibility Rules; Debugging Declaration ROMs; Apple II Development Dynamo
  2554. Issue 2  Using C++ Objects; Using Objects Safely in Object Pascal; The Memory Manager; MacApp; How to Design an Object-Based Application; Unofficial C++ Style Guide; Demystifying the GS/OS Cache
  2555. Issue 3  ISO 9660 and High Sierra; Creating a Mixed-Partition CD; Accessing CD Audio Tracks; The Comm Toolbox; Macintosh Display Card 8•24 GC; PrGeneral, the Trap That Makes the Most of Printing
  2556. Issue 4  Writing a Device Driver in C++; Polymorphic Code Resources in C++; The Macintosh Coprocessor Platform and A/ROSE; Perils of PostScript — The Sequel; An Apple IIGS Printer Driver
  2557. Issue 5  (Volume 2, Issue 1)  Asynchronous Background Networking; Scanning From ProDOS; Palette Manager Animation; Macintosh Common Lisp
  2558. Issue 6  Threads on the Macintosh; QuickDraw's CopyBits Procedure: Better Than Ever in System 7.0;     MacTCP Cookbook: Constructing Network-Aware Applications
  2559. Issue 7  QuickTime 1.0; Scoring Points With TrueType; Threaded Communications With Futures; Using C++ Objects in a World of Exceptions; The Subspace Manager
  2560. Issue 8  Curves in QuickDraw; Validating Date and Time Entry in MacApp; Macintosh Debugging; Macintosh Hybrid Applications for A/UX
  2561. Issue 9  Color on 1-Bit Devices; The TextBox You've Always Wanted; Making Your Macintosh Sound Like an Echo Box; Simple Text Windows via the Terminal Manager; Tracks: A New Tool for Debugging Drivers
  2562. Issue 10  Apple Event Objects and You; PostScript Enhancements for the LaserWriter Font Utility; Drawing in GWorlds for Speed and Versatility; In Search of the Optimal Palette
  2563. Issue 11  Asynchronous Sound Helper; Around and Around: Multibuffering Sounds; Living in an Exceptional World; The NetWork Project: Distributed Computing on the Macintosh    
  2564.  
  2565. Subscribe to printed develop 
  2566. Would you like to become one of our many subscribers who like to have a paper copy of develop at their fingertips? Subscribing is easy; just follow these simple instructions: 
  2567. •    If you’d like us to bill you, fill out the form in this file and send it via AppleLink to DEV.SUBS, or print and fill it out, check “Please bill me,” and send it by mail to the address below.
  2568. •    If you’ll be paying by credit card, fill out the form and send it via AppleLink to DEV.SUBS, or print and fill it out and mail it to the address below.
  2569. •    If you’ll be paying by check, money order, or international money order, print the order form, fill it out, and mail with payment to the address below.
  2570. Don’t send cash. And please use a separate form for each subscriber.
  2571. Subscribe & Save 25%
  2572. Yes! Send me a year (4 issues) of develop and the Developer CD Series disc for only $30 in the U.S. That’s 25% off the cover price. All other countries $50. 
  2573. Name:
  2574. Company/Institution:
  2575. Title:
  2576. Street or Post Office Address:
  2577. City:
  2578. State/Province and Zip Code:
  2579. Country:
  2580. Telephone:
  2581. ____ Please bill me.        ____ Payment enclosed.
  2582. ____ VISA    ____ MasterCard
  2583. Credit card account number:
  2584. Credit card expiration date:
  2585. ______________________________________
  2586. Signature/Date (only if sending by postal mail)
  2587. Phone orders call        1-800-877-5548 in the U.S.
  2588.                 (815)734-6309 all other countries
  2589. Fax orders to        (815)734-4205
  2590. AppleLink orders to    DEV.SUBS
  2591. Allow 6–8 weeks for delivery. U.S. subscription price is $30 for 4 issues of develop and the Developer CD Series disc. All other countries $50. For Canadian orders, price includes 7% GST (R100236199). Please make check payable to Apple Computer, Inc., in exact amount in U.S. dollars, and mail to:
  2592.         develop
  2593.         Apple Computer, Inc.
  2594.         P.O. Box 531
  2595.         Mt. Morris, IL  61054-7858
  2596.         USA
  2597. B1092D
  2598. RESOURCES
  2599. Apple provides a wealth of information, products, and services to assist developers. APDA, Apple's source for developer tools, and Apple Developer University are open to anyone who wants access to development tools and instruction. Qualified developers of commercial products in the U.S. and Canada may access additional information and services through the Apple Associates and Partners programs.
  2600.     The Associates Program, Apple’s mainstream program for developers of commercial products, is a convenient and cost-effective way to get essential technical and marketing information. This program offers self-help technical support, keeps you up to date with the latest products and technical documentation, and gives you access to the Apple developer community through AppleLink. Associates also receive discounts on equipment. The Associates program is designed for developers of commercial Apple-compatible products.
  2601. The Partners Program is open to Apple-selected developers of commercial products. In addition to receiving the same development information and tools as Associates, Partners receive technical support via electronic mail. Membership in the Partners program is limited to developers who directly contribute to Apple’s long-term product strategies and business objectives. 
  2602. APDA offers convenient worldwide access to development tools, resources, training products, and information for anyone interested in developing     applications on Apple platforms. Customers receive the quarterly APDA Tools Catalog featuring over 300 Apple and third-party development products. There are no membership fees. APDA offers convenient payment and shipping options, including site licensing. Apple Associates or Partners automatically receive the APDA Tools Catalog.
  2603. Apple Developer University provides training for all levels of Macintosh programmers. Developer University classes give you experience using the most up-to-date development tools. Developer University offers classes at U.S. and international locations and through authorized third parties. On-site instruction can also be arranged for selected courses. Multimedia self-paced courses are available from Developer University through APDA. These courses include Macintosh Programming Fundamentals, User-Centered Design, Introduction to Object-Oriented Programming, and AppleTalk for Programmers.    
  2604.  
  2605. ¨®◊#ˇ ˇˇˇˇ#◊ 
  2606. d,     Helvetica
  2607. <.°dONLNd±;Ÿw˛+˜àd°dONLNdê; w-)3e°dONLNdè;;w\)/v°dONLNd;jwã)/e°dONLNd;ôw™)/l°dONLNd;∏w›)o°dONLNd;Îw)3p
  2608. °dONLNdw›ÜÊ(°˚T°dONLNdwÎÜÛ)h°dONLNd    w¯Ü)
  2609. e°dONLNd
  2610. wÜ)
  2611.  °dONLNd w
  2612. Ü)A°dONLNd wÜ#)p°dONLNd
  2613. w(Ü0)
  2614. p°dONLNdw5Ü8)
  2615. l°dONLNdw=ÜE)e°dONLNdwJÜM)
  2616.  °dONLNdwRÜ[)T°dONLNdw`Üh)e°dONLNdwmÜt)
  2617. c°dONLNdwyÜÅ) h°dONLNdwÜÜé)
  2618. n°dONLNdwìÜñ)
  2619. i°dONLNdwõÜ¢)c°dONLNdwßÜØ) a°dONLNdw¥Ü∑)
  2620. l°dONLNdwºÜø) °dONLNdwƒÜ )J°dONLNdwœÜ◊) o°dONLNdw‹Ü‰)
  2621. u°dONLNdwÈÜÓ)
  2622. r°dONLNdwÛÜ˚)
  2623. n°dONLNd wÜ)
  2624. a°dONLNd!w
  2625. Ü)
  2626. l
  2627. 6mPòÅmHH‡µHt◊ˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇˇˇˇˇÃÃˇˇÃÃÃÃˇˇôôÃÃˇˇ    ffÃÃˇˇ
  2628. 33ÃÃˇˇ ÃÃˇˇ ˇˇôôˇˇ
  2629. ÃÃôôˇˇôôôôˇˇffôôˇˇ33ôôˇˇôôˇˇˇˇffˇˇÃÃffˇˇôôffˇˇffffˇˇ33ffˇˇffˇˇˇˇ33ˇˇÃÃ33ˇˇôô33ˇˇff33ˇˇ3333ˇˇ33ˇˇˇˇˇˇÃÃˇˇ ôôˇˇ!ffˇˇ"33ˇˇ#ˇˇ$ˇˇˇˇÃÃ%ÃÃˇˇÃÃ&ôôˇˇÃÃ'ffˇˇÃÃ(33ˇˇÃÃ)ˇˇÃÃ*ˇˇÃÃÃÃ+ÃÃÃÃÃÃ,ôôÃÃÃÃ-ffÃÃÃÃ.33ÃÃÃÃ/ÃÃÃÃ0ˇˇôôÃÃ1ÃÃôôÃÃ2ôôôôÃÃ3ffôôÃÃ433ôôÃÃ5ôôÃÃ6ˇˇffÃÃ7ÃÃffÃÃ8ôôffÃÃ9ffffÃÃ:33ffÃÃ;ffÃÃ<ˇˇ33ÃÃ=ÃÃ33ÃÃ>ôô33ÃÃ?ff33ÃÃ@3333ÃÃA33ÃÃBˇˇÃÃCÃÃÃÃDôôÃÃEffÃÃF33ÃÃGÃÃHˇˇˇˇôôIÃÃˇˇôôJôôˇˇôôKffˇˇôôL33ˇˇôôMˇˇôôNˇˇÃÃôôOÃÃÃÃôôPôôÃÃôôQffÃÃôôR33ÃÃôôSÃÃôôTˇˇôôôôUÃÃôôôôVôôôôôôWffôôôôX33ôôôôYôôôôZˇˇffôô[ÃÃffôô\ôôffôô]ffffôô^33ffôô_ffôô`ˇˇ33ôôaÃÃ33ôôbôô33ôôcff33ôôd3333ôôe33ôôfˇˇôôgÃÃôôhôôôôiffôôj33ôôkôôlˇˇˇˇffmÃÃˇˇffnôôˇˇffoffˇˇffp33ˇˇffqˇˇffrˇˇÃÃffsÃÃÃÃfftôôÃÃffuffÃÃffv33ÃÃffwÃÃffxˇˇôôffyÃÃôôffzôôôôff{ffôôff|33ôôff}ôôff~ˇˇffffÃÃffffÄôôffffÅffffffÇ33ffffÉffffÑˇˇ33ffÖÃÃ33ffÜôô33ffáff33ffà3333ffâ33ff䡡ffãÃÃffåôôffçffffé33ffèffêˇˇˇˇ33ëÃÃˇˇ33íôôˇˇ33ìffˇˇ33î33ˇˇ33ïˇˇ33ñˇˇÃÃ33óÃÃÃÃ33òôôÃÃ33ôffÃÃ33ö33ÃÃ33õÃÃ33úˇˇôô33ùÃÃôô33ûôôôô33üffôô33†33ôô33°ôô33¢ˇˇff33£ÃÃff33§ôôff33•ffff33¶33ff33ßff33®ˇˇ3333©ÃÃ3333™ôô3333´ff3333¨333333≠3333Æˇˇ33ØÃÃ33∞ôô33±ff33≤3333≥33¥ˇˇˇˇµÃÃˇˇ∂ôôˇˇ∑ffˇˇ∏33ˇˇπˇˇ∫ˇˇÃêÃÃÃúôôÃÃΩffÃÃæ33ÃÃøÃÿˇˇôô¡ÃÃôô¬ôôôô√ffôôƒ33ôô≈ôôΔˇˇff«ÃÃff»ôôff…ffff 33ffÀffÃˇˇ33ÕÃÃ33Œôô33œff33–3333—33“ˇˇ”ÃÑôô’ff÷33◊m6mP≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠≥â≥â≥â≥≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥âà≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠â≠àââ≠à≠≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥ââ≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠à≠â≠≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥âàâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâ≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥â≥âà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠à≠à≠àâà≠≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠â≥â≠âàâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâ≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥â≠à≥â≠â≥âà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠à≠â≠à≥â≠ààâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâ≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥â≠à≥âà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠àâàâàâà≠≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠ààâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâ≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠ààâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàâàââà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâàÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâdÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâDzà1ÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇààâÇà≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠¨≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠à≠ààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâ˝àÇàà¨Ç¨à≠˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààâ˛àâÇààââà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠ààÇâà≠à≠à¨à≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàÇàÇàÇàÇà]ÇÇàÇàǨǨà¨Ç˛àDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàÇà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠ààÇàÇàÇàÇàà≠à≠à≠¨≠à≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àààDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàÇàÇà^ÇÇà^Ç^à]àǨǨà¨à¨ààDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàààâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâ˛àâààÇàDzàÇÇ^àÇàà≠à¨à≠¨≠à≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àâàâà≠˛àÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇà^ÇÇà^Ç^Ç]àÇà]Ç^àÇàà¨Çàà¨ààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâàL≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠˛à≠ààÇàÇàÇàÇàÇàÇàÇàÇàÇàà≠à≠à≠¨≠˛à)≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àâà≠àÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇà]ÇÇà^àÇà^à^Ç]Ç^à^Ç^àà¨à¨à¨à¨ÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàààâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâààDzàÇàÇàÇàÇàÇàÇà^àÇàÇàÇàÇ≠à≠à≠¨≠à≠˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àâ˛àÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇà]Ç^àÇà^Ç]Ç^à^àÇà]ÇÇà^à^àÇàǨÇàà≠à¨ààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇà§˝àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâ˙àâààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàDzà
  2630. ÇàÇ≠à¨à≠à≠à≥¨≠¸àâ˙àâ˙àâ˙àâ˙àâ¸àÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇÇ^Ç]à^Ç^àÇà]àÇà]ÇÇà]Ç^àÇà^à^àÇàǨà¨Ç¨à¨ààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇààDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàÇàÇà^àÇàDzà ÇàÇàÇà^ÇÇàÇàÇàÇÇ^àÇàÇ≠à¨à≠à≠¨≥ààDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàÇ^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇàl^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà]àÇà^à^à]Ç]à]ÇÇàÇà^à^Ç]Ç]ÇÇàÇàÇà]Ç^Ç]àà¨ÇàÇ¨à˛¨)ÇàÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^àÇàÇàÇà^à˛àDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàÇàÇàDzàÇàÇàÇà^àÇâÇàÇàÇÇ^˛àDzàÇàÇà^àà≠à≠à¨à≠¨≠¨≠ààDzàDzàDzàDzàDzàDzàDzàDzàDzàÇààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàRÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇà^ÇÇà^àÇà^Ç^à]Ç]Ç]ÇÇà]˛ÇC]ÇÇà^Ç^àÇàÇà]Ç^àÇàà¨Ç¨à≠à¨ààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇààDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzà<ÇàÇàÇàÇàÇàÇà^àÇÇ^àÇàÇàÇà^Ç^àÇàÇàÇàÇàÇàÇàǨà¨à≠à≠¨≠¨≠ààÇàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàÇ]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]Ç^à]Ç]Ç]Ç^à]Ç]Ç]Ç^Ç]Ç^Ç]Ç^à]Ç]Ç]àÇà]Ç^à]Ç^à^àÇàÇàǨǨà¨ààÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]à˛àDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàDzàÇàÇÇ^àÇàÇàÇàÇàÇàÇàÇàDzàÇàÇàÇàÇàǸàÇàÇàÇàÇâà¨à≠à¨à≠¨≠¨≠ààDzàDzàDzàDzàDzàDzàDzàDzàDzàÇààÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]ànÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]Ç^à^àÇà]Ç^à^ÇÇà]àÇà^à^Ç]ÇÇà^Ç]Ç]Ç^à^Ç^àÇàÇà]Ç^à]ÇÇàǨà¨Ç¨à¨à˛¨'ÇàÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇà]àÇààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇYàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇà^àÇàÇàÇàÇàÇàÇà^àÇàÇàÇÇ^àÇàÇà^ÇDzà<^àÇà^àÇàÇ≠à¨à≠à≠à≠¨≠¨≠ààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇ]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]à]à]Ç]Ç^à^à]Ç^Ç]Ç^Ç]ÇÇà]Ç^à]Ç^Ç]àÇà]Ç^Ç]Ç^Ç]Ç^à]Ç^à]Ç^à^àÇàÇàà¨à¨à¨à¨àà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]à˛àÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàÇàÇàÇàÇà^àDzàÇàDzà^àDzàÇàDzà ÇàÇàÇà^àÇàÇàÇàÇàà≠à≠à≠¨≠¨≥¨≠ààÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàDzàÇàÇàÇààÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇàÅàÇà]ÇÇà^ÇÇà]ÇÇà]ÇÇà]Ç]Ç^àÇàÇàÇà^Ç]àÇàÇà]àÇàÇàÇàÇà^Ç]àÇàÇàÇà^àà¨Çàà¨à¨¨≠à¨Çà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇà]àÅà]àÇààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇGàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇà^Ç^àÇàÇàÇàÇàÇàÇà^àÇàÇàÇàDzà˛Ç˛àÇàÇàÇàÇàÇàÇàÇàÇàDzà4^àà¨à≠à¨à≠¨≠¨≥¨¨ÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇ]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]àp]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]Ç^à]à^Ç]Ç^à]ÇÇàÇà^à]Ç]Ç^àÇà^Ç]àÇàÇÇ]àÇà^àÇà^Ç]Ç]Ç^Ç]à^à^àÇà^Ç^àÇàǨǨà¨à˛¨%Çà]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]à]à]Ç]à]ààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇ+àÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàDzàÇàÇàÇàÇàà≠ààÇàÇàǸàÇàÇâààDzàJÇàÇàÇàÇàÇàÇà^àÇàÇàÇàÇàÇàà≠à¨à≠¨≠¨≠¨≠¨≠ààÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàÇ]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à6]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]Ç]à]Ç^à^Ç^Ç]àÇàÇàÇà^Ç^Ç^˛à_^Ç^Ç]ÇÇàÇàÇà^àÇà^Ç^àÇà^à]àÇà]àÇÇ]Ç]Ç^àÇà]Ç^Ç]àà¨Ç¨à¨à¨à¨à¨ààÅà]à]àÅà]à]à]àÅà]à]à]àÅà]à]à]àÅà]à]ààÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇ5àÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇÇ^à^Ç^àÇà^àÇàÇàÇàÇàÇàDzà^àÇà^àÇàÇàÇàÇàÇÇ^àÇà^˛àH^àÇà^àÇà^àÇÇ^àÇàÇàÇàÇàà¨à≠à¨à≠¨≠¨≥¨≠à¨ÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅ]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]Ç]Ç]Ç]Ç]Ç]Ç^à]à^Ç]Ç]Ç^àÇà]Ç]Ç]Ç]Ç]Ç^à]Ç^Ç]Ç^à]Ç^à]Ç^à]Ç]Ç]Ç^à]Ç]Ç]Ç]à^àÇàÇàǨǨà¨à¨à¨à¨Çà]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]ÇàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅOàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÇàÇàÇàÇà^àÇÇ^àÇàÇàÇàÇàÇàÇàÇàÇàÇà^Ç^Ç^àÇàÇàÇà^àÇàÇàÇà^˛àÇàÇÇ^àÇàÇàÇàÇà^ÇÇ˝à≠˛à-≠ਨ≥¨≠¨≥¨¨ÇàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇàÅàÇ]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]à^à]Ç^à]Ç]à]Ç^à^à^Ç]Ç^Ç]Ç^à]Ç^Ç]Ç]Ç]Ç^à^Ç^Ç]ÇÇà^àÇà]ÇÇà^Ç^Ç]Ç^àÇà^à^Ç^Ç^àÇàÇàÇàÅàÅàŨ¨≠ਨ≠ÇàÅà]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]ààÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅ=àÅàÅà]àÅàÅàÅà]àÅàÅàÅàÅàÇà^àÇàÇàÇÇ^à^àÇàÇà^àÇà^àÇàÇàÇà^àÇà^à^Ç^˛à^àÇà^˛àDzàLÇàÇà^àÇà^àÇàÇàÇàÇàÇà^âÇàÇàÇàÇàÅÇ]àà≠¨≠¨≠¨≠àà]àÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅ]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]ÇH]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]à]à^à]Ç^à]Ç^Ç]Ç^à]Ç]à^à^Ç]Ç^à]Ç^Ç]àÇà]Ç^à]àÇà^ÇÇà]ÇÇàDzàMÇàÇà]Ç^à]Ç^Ç]à^Ç^à^à^Ç^à^àÇàÇÇ]ÇW]]àà¨à¨à¨à¨ÅÇ]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]ÇàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÇàDzà
  2631. ÇàÇàÇàÇàÇàDzàÇàÇàÇàÇàÇàÇàÇà^˛àÇàÇàǸàXÇàÇàÇàà≠à≠à≥à≠ÇàÇàÇàÇàÇàÇàÇâààÇâÇàÇ≠à≠à≠ààÅàÅÇÇ≥¨≠¨≥¨≠¨¨ÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅàÅ]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]ÇZ]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]à]ÇÇàÇà^à]Ç^à]àÇàÇàÇà^Ç^à^àÇà^Ç^à]Ç^à^Ç^à^àÇà^à^à^à^Ç]àà≠à≠¨≠à¨ÇàÇàÇà^àÇàDzà;^àÇàÇàà≠àâà≠ÇÇÅàÅàà¨à¨¨≠¨¨Çà]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Çà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]à^àÇàÇàDzàÇà^à^àÇàÇàÇàÇàÇà^˛àlÇàÇÇ^à^àÇàÇàÇàÇà^àÇà^àÇà^àÇàà≠à≠à≥¨≠à≠¨≠à≠à≠à≥à≠à≠à≠à≠à≠à≠à≠¨≠à¨Å¨Ç¨à≠¨≠¨≥¨¨Åà]à]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]àÅà]]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Çc]Å]Ç]Å]Ç]Å]Ç]Ç]Ç]ÇÇàÇàÇà^à^Ç]ÇÇà]à^à]Ç^à]Ç^à^à^Ç]Ç]Ç]Ç]Ç]Ç]Ç]^]Ç]Ç]Ç]ÇÇà]ÇÇàÇàǨǨ¨≠¨≠¨≥¨≠¨≥¨≥¨≥¨≠à≠˛à
  2632. ≠à≠¨≠ÇàÅàŨà¨à˛¨!Çà]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]ÅàÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅà]à^à^àÇàDzàÇàÇà^àÇàÇàÇàÇà^àDzà ÇàÇàÇàÇÇ^àÇÇ^àÇàÇàÇàÇàÇà^àÇàÇàÇàDzàJÇ≠à≠à≠¨≥¨◊≥◊≠◊≠≥¨◊≠≥≠≥≠≠¨◊≥◊¨≠à¨Å¨¨≠¨≥¨≠¨≥¨à]àÅà]àÅàÅàÅà]àÅàÅàÅà]àÅàÅàÅà]àÅ]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Åm]Ç]Ç]Ç]Å]Ç]Ç]Ç]Ç^Ç]Ç^à]Ç^Ç]Ç^Ç]àÇà^Ç]Ç]àÇà^Ç^à^à^Ç]Ç^Ç]Ç^Ç]àÇàÇàÇàÇÇ^à^àÇà^Ç^à]Ç^à^àÇàǨ¨≥¨≥¨≠ਨ≠¨≥¨≥¨≥¨≥¨≥¨¨˛Å¨à˛¨à˛¨ÅÇ]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]Ç]Ç]Ç]Å]ÇÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅ'Ç]àÅÇ]àÅÇ]àÅÇ]à^Ç^àÇàÇà^à^àÇà^àÇàÇàÇà^àDzàÇà^˛à)]àÇàÇàÇàÇàà¨à≠à¨à≠ààǨÇÇ^àÇà^àÇàÇàÇà^à¨≥¨≠˛à;≠¨≠¨◊≠≥≠◊≠≥≠◊≠≥¨¨Å¨Å¨¨≠¨≠¨≠¨¨ÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å@]Å]Ç]Å]Å]Å]Ç]Ç]Ç]Ç^à]Ç]Ç]Ç^à^Ç^Ç]Ç^à]Ç]àÇà^à]Ç^à]Ç]à^àÇà]àǨà¨à¨à˛¨UÇàÇà]Ç^à]Ç]Ç]àÇà]ÇǨà¨Çà]ÇǨà≠¨≥¨≠¨≥¨≠¨≥¨¨ÅàÅàŨà¨à¨à¨Çà]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]ÅàÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]'àÅÇ]àÅà]àÅÇ]àÇàÇàÇàÇàÇàÇàÇàÇàÇàÇà^àÇàÇàDzànÇàÇàÇàÇà^àÇàÇàà≠¨≥¨≠¨≥¨≥¨≥≠≠àà^Ç^àÇà^àÇàÇàÇàà≥àà^àÇàà≥¨≥≠◊≠≥≠◊≠≥≠◊¨¨Ç¨Å¨à≠¨≠¨≥¨¨Çà]à]àÅÇ]àÅà]àÅÇ]àÅà]àÅÇ]àÅà]àÅ]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]ÅV]Ç]Å]Ç]Å]Å]Å]Ç^àÇà^àÇà^Ç^à^Ç^àÇà^Ç]ÇÇà]ÇÇà^Ç^à]Ç^à]Ç^àÇà^àà≥¨¨à≠¨≠à≠¨≥¨à^Ç]Ç^à]Ç^à]Ç^àDzà]Ç^àǨ¨≥¨≥¨≥¨≥¨≥¨≥¨≥à¨ÅáŨà¨à˛¨àà]Å]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]ÇÇ]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]à]àÇàÇàÇàÇà^Ç^à˛Ç˛à]Ç^àÇàÇàÇàÇÇ^à^àÇàÇàÇ˝à_≥≠≥à≥≠≥¨≥≠≥≠≥ààÇàÇàÇàÇàÇàÇà^àÇàÇàÇàà¨à≠¨≥≠≥≠◊≠≥¨≥≠≥¨≥¨¨Å¨à¨¨≠¨≠¨≥àà]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]à]Ç]]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Åo]Å]Å]Å]Å]Å]Å]Ç^à]Ç]Ç]à^Ç]Ç^Ç]Ç^Ç]Ç]Ç]à^Ç]àÇÇ]Ç^Ç]Ç^à]àÇà^¨¨≥à¨à≥ਨ≥¨≥¨¨^àÇà]Ç^à]Ç]Ç]Ç^à]Ç^à^àǨਨ≥¨≠¨≥¨≠¨≥¨≠¨¨˛ÅàŨà¨à˛¨ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]ÅàÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]à^à^àÇà^àÇàÇàÇà^àÇÇ^àÇàÇàÇà^àÇà^àÇàÇàÇàÇàÇàÇâ¨≥≠≥¨≥≠≥à≥≠◊≥≥àâààÇàÇà^àÇÇ^àÇàÇàÇàÇàÇàà≥¨≥≠◊≠≥≠◊≠≥¨≥¨≥à¨Å¨Å¨¨≠¨≥¨≠¨¨ÇÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅÇ]àÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Åq]Å]Å]Å]Å]Å]Å]Ç]Ç^Ç]Ç^à]Ç^à]Ç^à]Ç^à^àÇà]Ç^Ç]Ç^à]Ç^à]Ç]Ç]àÇ≠¨≠à≠¨≥à≠¨≥¨≥¨¨Çà]Ç^à]ÇÇà]Ç^Ç]Ç^à^àÇàÇà¨≥¨≥¨≥¨≠¨≥¨≠¨≠¨¨Ç¨˛Å$¨à¨¨≠à¨àà]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]ÅÇ]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Ç]à^à^à^àÇàÇà^à^àÇàÇàÇàÇàÇàÇà^àÇàÇàÇàÇàÇÇ^àÇ≠¨≥à≠¨◊≠≠à≥≠≥≠≥¨à^àÇàÇàÇàÇàÇà^ÇÇàÇàÇàÇàà≠¨≥≠≥≠◊≠≥¨≥¨≠¨≥¨¨Å¨Å¨Ç¨¨≠¨≥¨≠ÇÇ]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]à]Å]Ç]Ç]]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Åq]Å]Å]Å]Å]Å]Å]^]Ç]Ç]Ç]Ç^à^Ç]Ç]à^à^àÇà^à]Ç^Ç]Ç]Ç^à]Ç^à]Ç^àà≠¨≠Ç≠¨≠Çà¨≥¨≥¨≠ÇÇ^Ç]à^Ç]Ç^à]Ç^à^Ç^Ç]ÇÇàà≠¨≥¨≥¨≥¨≠à≠à¨à¨à¨˛Å$ÇǨਨ≠àà]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]ÅÇ]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à^à^àÇàÇàÇàÇâÇÇ^àÇàDzà(ÇàÇàÇàÇàÇàÇàÇàÇàÇàÇàà≥≠≥à≠≠◊¨≠à≥≠◊≥≥¨≠Çà^˛àJÇàÇàÇàÇàÇàÇàÇàÇàà≥¨≠¨◊≠≥≠≥¨≠¨≥¨≥¨≠¨¨Å¨Å¨¨≥¨≠¨≥àÇ]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]Å]à]Ç]Ç]]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å9]Å]Å]Å]Å]Å]Å]Ç]Ç^à^àÇà^àÇà]Ç^Ç]àÇà]Ç^à]àÇà]àÇà]Ç^à^Ç]Ç^≠¨≥˛à4≥¨≠à≠¨≥≠≥¨≠àà]ÇÇàÇà^à]Ç^à^à^Ç]àÇà]à¨≠à≠¨≥¨≥¨≠ਨ≠¨¨à¨˛ÅáŞ¨à˛¨]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]ÅÅ]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]rÅ]Å]Å]Ç]Å]Å]Ç]à^àÇàÇà^àÇàÇàÇàÇàÇàÇàÇà^àÇàÇàÇàÇà^Ç]àÇà^àà≥≠≥à≠¨≥¨≠à≥≠≥≠≥¨≠ÇàÇàÇàÇà^àÇà^àÇÇ]àÇà^àÇ≠¨≠¨≥≠≥≠≥¨≥¨≠¨≥¨¨à¨˛Å˝¨≠¨≠àà]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]Å]Å]Ç]Å]˛]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]Ş]aÅ]Ç]Ç]Ç^à]^]Ç]Ç^à]à^Ç]àÇà]Ç]Ç^à^à]Ç^à]^^àÇà^≠¨≠ààÇ≠¨≠ਨ≥¨≥¨≠Çà^à]àÇà]Ç^à]Ç]Ç]Ç]à^à^àǨà≠¨≠¨≠ਨ≠à˛¨à¨àà˛Å ¨Ç¨à¨ààÅÅW]]Ş]Ş]Ş]Ş]Ş]Å]]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]4Ç]Å]Ç]Å]Ç]Å]à^à^àÇàÇà^Ç^àÇàÇàÇà^àÇàÇàÇàÇ≠ààÇàÇàÇâàâà≠˛à#◊≠≠à≠≠≥à≥≠≥≠◊≥≥¨≠ààÇàÇàÇàÇàÇàÇà^àÇàÇ˝à9≠¨≠¨◊≠≥≠◊¨≠¨≥¨≠¨≠¨≠à¨ÅàŨ¨≠¨≥àà]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]Å]Ç]]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Åz]Å]Å]Å]Å]Å]Å]Ç]Ç^Ç]Ç]Ç]Ç^à]Ç^à]Ç^Ç]Ç^à]àÇà]à^à^àà≠ààÇàÇ≠¨≠Çàà≥à≠à≠¨≥¨≥¨≠àà]Ç^à^àÇà^Ç^à]Ç^àÇàÇàÇàà¨à≠¨≥¨≥¨≠ਨ≠à¨à¨à¨ÅàÅÅÇ¨à˛¨ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å])Å]Å]Å]Å]Å]Å]Å]à^Ç]àÇÇ]àÇà^Ç^à^àÇà]àÇà^à^Ç^˛àlÇ≠à≠à≠ààÇ≠¨≥à≠à≠≠≥à≠à≥≠≥≠◊≠≠ÇàÇàÇàÇà^àÇàÇàÇààâààÇàǨà≠¨≥¨◊≠≥¨≠¨≠¨≥¨≠¨≠¨¨ÅáŨà≠¨≠à¨ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]˛]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]aÅW]]Ç]Ç]Ç]^]à^Ç^Ç]Ç^à]Ç]Ç]Ç^Ç]àÇàÇàà≠à≠àâ^àà≠¨≠Çàà≠¨≠Ǩ¨≥¨≠¨≥àà^à^Ç^à]Ç^à]Ç^à]àÇà]Ç^àǨà≠¨≠¨≥¨≠¨¨à˛¨à¨à¨¸Åàà≠à¨ÅÅW]]ÅW]]Ş]ÅW]]Ş]ÅW]]Å]]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Ç]Ç^àÇà^àÇàDzàÇàDzà'ÇÇ]àÇâà≠à≠à≠à≠à≥¨≠ààÇ≠≠◊àâà≥≠≥à≠à≥≠◊≠◊≠≥˝à#ÇàÇàÇàÇàÇàÇà^àÇàÇàà≠à≠¨≥≠≥≠◊≠≥¨≥¨≠¨≥˝¨$ÅàŨŨ¨≥¨¨ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]ÅW]]Ş]`ÅW]]Ç]Ç^à^Ç^à^àÇà^Ç]Ç]àÇà^ÇÇàÇàà≠à≠à≠ààÇàÇÇ^àà≥¨≠Çàà≥à¨à≠¨≥¨≥¨≥¨à]àÇà^à^à^à^Ç]àÇà^à^Ç^àÇàà≠¨≥¨≥¨≥˛¨≠˝¨à¨à¨˛ÅàŞ¨ÇÅ]]W]]Ş]ÅW]]Ş]ÅW]]Ş]ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]vÅ]Å]Å]Å]Å]Å]Å]à^Ç^àÇàÇàÇàÇà^Ç]ÇÇàÇ≠à≠à≠à≠à≠à≠à≠àà^à^àÇ≠≠≥àâà≠≠≥à≠à≥≠≥≠◊≥≥ààÇàÇàÇàÇàÇà^ÇÇàà≠àà^àÇàÇ≠à≥¨◊≠≥¨≥¨≠¨≥¨≠¨≠¨¨à¨˛Å¨¨≠¨¨ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]V˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]tV]]Ç]Ç]à]à]Ç]Ç]Ç]Ç^àÇàÇâÇàà≠ààÇàÇàÇà]Ç]Ç^àà≥¨àÇàà≠¨≠Çà¨≥¨≥¨≥àà^à^à^à]à^Ç]Ç]ÇǨà≠àà^à^àÇàà≠¨≥¨≥¨≠ਨ≠à¨à¨à¨ÅÅ]ÅŨà¨àÇV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]+Å]Å]Å]Å]Å]Å]Å]à^àÇàÇàÇà^àÇàÇâàâà≥à≠à≠à≠à≠ààÇ˛à    ÇàÇàÇàÇ≠¨◊˛à4≥≠≥à≠à≥≠◊≠≥≠≥ààÇàÇàÇàÇàÇàÇàÇâ¨≥≠≥≠âÇâàâà≠≠≥≠◊≥≥¨≥¨≥¨≥˛¨≠¨¨Åà˛Å≠¨≠ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]Ç^Ç]à]Ç]^]Ç^˝à8âÇàà≠à≠à≠ÇàÇà^Ç]àÇàÇà^à^àÇ≠¨≠Çà¨≥¨≠ਨ≥¨≥¨≠¨à^Ç^à]Ç^à^Ç^à˛Ç¨à≥≠≥ààÇàÇàÇ≠¨≠¨≥¨≥¨≠˝¨'Ǩà¨ÇàÅÅ]Åà≠àà]ÅW]]ÅV]]ÅW]]ÅV]]ÅW]]ÅV]]ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]bÅ]Å]Å]Å]Å]Å]Å]à^Ç]à^Ç^àÇàà≥à≠à≠à≠à≠àâÇàÇàÇà^ÇÇàÇàÇà^Ç^≠≠≥à≠à≠≠≥¨àÇ≥≠≥≠≥≠≥àà^Ç^àÇà^àÇàÇàÇàÇ≥≠≥≠≥¨≠à≠˛à ≥≠≥¨≥≠≥¨≥¨≠ศàà˛Å¨¨≠ÇÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]V]W]V˛]`VÅ^Ç]^]Ç^ààâÇààâÇàà≠ààÇà]Ç]Ç]Ç^à]Ç^à]Ç^Ç]Çà≠¨≠à¨à≠¨≠ÇÇà≥¨≠¨≥ààÇà]Ç^à]Ç^à]à^Ç]àà≥¨≠¨≠à¨ààÇàà≥¨≠¨≠à˛¨à¨à¨Ç¨à¨¸Å ¨àà]]W]V]W]V˛]V]W]V˛]V]W]V]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]xÅ]Å]Å]Å]Å]Å]Å]à^àÇàÇ≠à≠à≠à≠Ç≠à≥≠≥àà^àÇÇ^à^àÇâÇà^à^Ç^àÇ≠≠◊¨àà≥≠◊¨àÇ≠≠◊≠≥≠≥ààÇàÇàÇàÇà^àÇàÇàà≠à≥≠≥≠≥¨≠à≠à≠¨≥≠≥¨≥¨≠¨≠¨¨à≠¨≠¨¨˛Å¨¨≠àà]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]]]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛]V]]ÅV˛] V]]Å]ÇÇâà≠à≠Dzà_ÇàÇ≠à≠àà]Ç^à]Ç]Ç]àÇà]Ç]Ç]Ç^àà≠¨≠Çàà≥¨≠Çàà≥¨≥¨≥¨¨ÇàÇà]Ç^à]Ç]àÇàÇàǨ¨≥¨≠¨≠à≠ààÇ≠¨≥¨≠à¨à¨à¨Ç¨à¨à¨àà˛Å    ¨ààÅÅV]]ÅV˛]V]]ÅV˛]V]]ÅV˛]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]1Å]Å]Å]Å]Å]Å]Å]àÇâà≠à≠àâÇàÇàÇàà≥≠≠^àÇàÇà^Ç]ÇÇà^àÇàDzàÇ≠¨≥à≠à≠¨◊≠àÇ≠≠≥¨≥≠≥à≠àà^àÇà^à˛Çàà¨Ç≠¨≥≠≥≠≥¨≥¨≠à≠à≥¨◊¨¨Ç≠à¨à˛¨à≠¨¨Çà˛Å¨àà]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]WV]V]V]V]V]V]VÅÅàÇàÇàÇà^Ç]Ç^à^àà≥ÇÇ]Ç^à^Ç]Ç]Ç]Ç]à]àÇà^àÇ≠¨≠ààÇ≠≠≥Çàà≠¨≠¨≥à¨Çà]Ç^à]Ç]Ç]ÇǨ˛à>≠à≠¨≥¨≠à≠ààÇàà≠¨≠^ÇǨǨà¨Ç¨à¨à¨ÅÅVÅŨÅÅV]V]V]V]V]V]V]V]V]V]V]V]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]sÅ]Å]Å]Å]Å]Å]ÅÅàà≠ààÇàÇà^à^à^àà≥≠≠ÇÇ^àÇàÇàÇàÇà^Ç^àÇàÇàÇà¨◊≠≠Ç≠≠◊≠≠à≠¨≥≠≥≠≥¨¨ÇàÇàÇàÇàÇàà≠à≥≠≥¨≥¨≥≠◊≠≥¨≥¨≠à≠≠≥àâǨà≠¨¨à˛¨à≥¨¨˛Å¨à¨ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]yV]V]V]V]V]V]]àÅàÇà^Ç^à]Ç^Ç]Ç]àà≠àà]Ç^Ç]ÇÇà^à^à]Ç^à^à^àÇ≠≠≥àÇÇ≥¨≥àâÇà¨≥¨≥¨≠ÇÇ]Ç^à^à^àǨਨ≥¨≠à≠¨≥¨≥¨≠¨≠ààÇàÇà^ÇǨà¨Ç¨à¨Ç¨à¨¸Å¨ÇÅV]V]V]V]V]V]V]V]V]V]V]V]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]@Å]Å]Å]Å]ÅVÅ]àÇàÇà^àÇà^à^à^à^ÇÇ≥≠≠ÇàÇÇ]Ç^àÇàÇàÇà^àÇàÇà^àà◊≠≥Çà¨◊≠≥˛à1≥¨≥≠≥¨≠ÇÇ^àÇàÇàà¨à≠¨≥¨≥≠≠à≥≠≥≠◊≠≥¨≥àà^âàÇ^¨à≠à¨à¨à¸¨˛Å´¨¨]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]{V]V]V]V]V]VÅ]àÇà]Ç]Ç]Ç]à^à^Ç]àà≠àà^à]^]Ç]Ç]Ç]à^Ç]à^Ç]^]à¨≥¨à^àà≥¨≠^àà≠¨≥¨≠àà]Ç]Ç]àà¨Ç¨à≠¨≠¨≠à≠à≠¨≠¨≥¨≠àà^Ç^à^ÇǨà¨Ç¨Ç¨à¨à¨à¨˛Å¨ÅÅV]V]V]V]V]V]V]V]V]V]V]V]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å] Å]Å]Å]Å]Å]Å]˛àÇàÇà^à^àÇàÇàÇàà≠¨≠ÇàÇàÇà^à^Ç^˛àDÇàÇà^à^àÇ≥≠≥àâà≠≠◊≠âÇ≠≠≥≠≥¨≠ààÇàÇàà≠à≠¨≥≠≥≠≥¨≥≠≥¨≥≠≥≠≥àâàâÇàÇâà¨à≠à¨à˛¨à˛¨à¨Å´Å¨ÅÅ]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]Å]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V];V]V]V]V]V]V]^àÇà^à^à^Ç]Ç^à]àǨà≠àà]Ç^à^Ç^Ç]Ç^à^à^à^à^Ç^àà≥¨≠˛Ç?≠¨≠ÇàÇ≠¨≥¨≠Çà^à^àà¨à¨à≠¨≥¨≥à≠à≠à≠¨≥¨≠àâÇàÇà^Ç^àÇàà¨Ç¨à¨Ç¨à¨Ç¨ÅÅIJÅV]V]V]V]V]V]V]V]V]V]V]V]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]B]VÅ]]VÅ]]VÅ]àÇàÇà^àÇà^àÇà^ÇÇàà≠¨≠Çà^àÇàÇÇ^à^Ç^àÇàÇàÇÇ^à^àà◊≠â^âà≥¨≠˛à/≥≠≥¨≠ÇàÇâà≠à≠¨≥≠◊≠≥¨≥¨≠à≠¨≠¨≥àâÇâàà^àÇàÇàà¨à≠à¨à˛¨à¨à¨˝Å]Å]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VV]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]VÅ]Ç^à]Ç]à^Ç^à]Ç]Ç^àà≠àà^Ç]ÇÇà]Ç]Ç]Ç^Ç]àÇÇ]^]^]à¨≥àÇ^àà≠¨≠^àà≠¨≠àà]àÇàÇàà≠¨≥¨≥à≠à≠à≠à≠à≠àà^ààâ^Ç^à^àÇàà¨à¨Å¨à¨Ç¨Ç¨ÇàÅÅVÅV]V]V]V]V]V]V]V]V]V]V]V]Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\JÅ]Å\Å]Å\Å]Å]àÇà^à^Ç^àÇàÇàÇà^àà≠¨≥ààÇà^à^à^àÇàÇà^àÇàÇàÇà^àÇ≠≠≥àà^≠≠◊≠≠à≠¨◊≠≠˛à¨à≠¨≥≠≥≠≥≠≥≠≠¨≥≠≥¨≠à≠àâàâàâÇàÇâ˛à≥¨≠à˛¨à≠˛¨≠à˛Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]Å\Å]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]7V]V]V]V]V]VÅ^à]Ç^Ç]^]à^àÇà^Ç]àà≠àà^Ç]Ç]Ç]Ç^à^Ç]Ç^Ç^à^àÇà˛^^≠¨≠^Ç^≠¨≥¨≠Ç≠¨≥ààǨÇàà≥¨≥¨≠¨≠¨≠à≠¨≥à≠Çà^ààâÇàÇà^Ç^àÇàà¨Ç¨Ç¨Ç¨à¨à¨à¨ÅÅV]V]V]V]V]V]V]V]V]V]V]V]V]]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\J]VÅ]]VÅ\]VÅ]à^à^àÇà^Ç^àÇàÇàÇàÇ≠¨≠àà^Ç^àÇà^àÇà^àÇà^àÇàÇ≠àà]àà≥¨≠ààÇ≥≠≥¨≠¨≥≠≥˛à+≠¨≥≠≥≠≥¨≥≠≥¨≥¨≥¨≠àà^àÇâà≠àâÇà^àÇàà≠à≠à¨à¨à¨à˛¨à¨]]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VV]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]dV]V]V]V]V]V]]Ç]à^àÇà]^]à^Ç]Ç^àÇ≠àà^Ç]Ç]à^Ç]Ç]Ç^à^à^à]ÇÇ≠ÇÇ]àà≠¨â^Çà≥¨≠¨≥¨≠à¨Çàà≥¨≠¨≥¨≠¨≠à≠à≠à≠Çà^Ç^Ç^˛à1^à^Ç^à^àǨà¨Ç¨Ç¨Ç¨à¨Ç¨ÅÅV]V]V]V]V]V]V]V]V]V]V]V]V]Å]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ\Å]ÅV]VÅ]]VÅ]]VÅ]]VÅ\]]à^Ç^˛àYÇàÇàÇàÇà^àÇ≠¨≥àà^àÇàÇàÇà^àÇàÇàÇà^àÇà¨≥à^^à¨≥¨â^≠≠◊≠≥≠≥≠≠à≠¨≥≠≥≠≥≠≥≠≥¨≥¨≠¨≥à≠àâÇàÇâàâÇà^àÇâ˛à≠¨≠à˛¨"à¨à¨à≠¨¨]]V]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]]VÅ]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]VÅ]Å]]V]V]V]?V]V]V]V]V]V]]Ç]Ç^à]àÇà^Ç^à]Ç^àÇ≠àà^Ç^Ç]Ç]Ç^à^Ç]Ç^à]Ç]ÇÇ≠¨≠]^]àà≥˛àV≠¨≥¨≠¨≥à¨à≠¨≥¨≥¨≥¨≥¨≠à≠à≠àâààÇà^ààâÇÇ^à^àà¨à¨Ç¨à¨à¨Å¨Ç¨Ç¨à¨ÇÅV]V]V]V]V]V]V]V]V]V]V]V]V]]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]VÅ]ÇŨàà]ÅV]VÅ\:]V]V]VÅ\]V]]à^àÇà^àÇàÇà^Ç^à^ÇÇ≠¨≠ààÇà^à^Ç^àÇÇ^Ç^Ç^àÇà^â¨≥¨≠˛^(≠≠≥¨≥≠≥≠◊≠≥¨≥¨≠¨≥≠≥¨≥≠≥≠≥¨≠¨≠àâàâàà^àÇàà≠˛à ≠à≠¨≥¨≠¨≠¨¨à˛¨ à¨à¨à¨Å]V]V]VÅ\]V]V]VÅ\]V]V]VÅ\]VV]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]]Ç]àà¨Çà]]V]V]V]V]V]V]V\VÅ]à^à]Ç^à]à^Ç]Ç^Ç]Çà≠ààÇà]Ç^ÇWÇ^à]Ç]Ç]Ç]Ç]ÇÇ≠¨≥àà]Çà≥¨≠¨≥¨≠¨≠à≠¨≥¨≠¨≠à≠¨≥¨≠¨≠à¨àà^à^à^ÇÇàÇàÇàÇàà¨à¨¨≠à¨à¨à¨Ç¨Å¨Ç¨Ç¨ÇÅV\V]V]V]V]V]V]V]V]V]V]V]V]Å]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]àǨà¨à≥¨à]ÅV]V)Å]]VÅ\]VÅ\]]àÇà^àÇà^àÇà^àÇà^àà≠¨≥ààÇàÇà^àDzàJÇà^àÇÇ^àÇàà◊≥≥ààÇ≠≠◊≠≥≠◊≠≥¨≥≠≥≠◊≠≥≠≥≠≥≠◊≠≥¨≠àâàâààÇâà≠à≠ààÇâà≠à≥¨≠¨≥¨≠¨¨à¨à˛¨à˛¨ÅÅ\]VÅ\]VÅ]]VÅ\]VÅ]]VÅ\]VÅ]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]WÇ^àÇàÇà¨≠àÅV]V];V]V]V]V]V]V]]à^Ç^à]Ç]à]Ç^Ç]Ç^àà≠àâ^Ç^à^Ç^à^à^à]Ç^à]Ç^à^à¨≥¨≠˛àZ≠¨≥¨≥¨≥¨≠¨≠¨≥≠≥¨≠¨≥¨≥¨≥à¨Çà^àÇàÇàÇàÇàÇà]àÇàÇàà≠ਨ≠à¨à¨Å¨à¨Ç¨à¨àÅV]V]V]V]V]V]V]V]V]V]V]V]V]]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]]Ç]ÇǨǨà≠¨≥àÅV]Va]VÅV]V]V]V]]Ç^àÇàÇà^Ç^Ç^Ç^à^ÇÇ≠¨≥àà^Ç^àÇà^à^Ç^àÇà^àÇàÇàà≥≠◊≠≥à≠≠≥≠◊≠≥¨≥≠≥¨≥≠≥¨≥≠≥¨≥≠≥¨≠àà^âàâà≠àâDzà^ÇÇàÇàÇ≠¨≠¨≠¨≥¨¨à¨à¨à¨à˛¨ÅÅV]V]V]V]VÅV]V]V]VÅV]V]V]VV]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V\V]V]WÇ]^]àÇàÇàà≠¨¨ÅÅV\GV]V]V\V]V\V]]Ç]à^à]Ç]Ç]^]Ç^Ç]ÇÇ≠ààÇÇ]Ç]à^à^Ç]Ç^à]Ç]Ç^à^¨¨≥¨≥¨≠à≠¨≠¨≥à≠¨≥˛¨N≠à≠à≠¨≠¨≥¨≠à≠ÇàÇà^ÇÇàÇà^à]^]Ç]Ç]àǨà¨à¨¨≠à¨Å¨Å¨Ç¨Ç¨àà]]V]V\V]V]V]V\V]V]V]V\V]V]tÅV]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅV]VÅV]VÅ]Å]Ç]Ç^àÇàà≠˛à<≥≠≥¨≥àÅV]V]VÅ\]VÅV]]à^ÇÇàÇà^àÇà^à^à^àÇ≠¨≥àà^àÇàÇàÇà^àÇàÇà^Ç^â˛à'≥≠≥≠◊≠≥¨≥≠≥¨≥≠≥≠◊¨≠à≠à≠à≥≠≥¨≥¨≠à≠ààÇà^Ç^˛àÇàÇàÇà˛Ç≠¨≠˛¨    ≥¨≠à¨à¨à¨à˛¨ÅÇ]]VÅ\]VÅV]VÅ\]VÅV]VÅ\]VÅVrV]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]WÅ]Ç]Ç^àÇà]˛àÇà¨≥¨≠¨¨ÅÅV]V\V]V]V]V]]à^Ç^à]Ç^à^àÇà]Ç^àÇ≠à≠^Ç^à]Ç]Ç]Ç^Ç]Ç^Ç]ÇÇà]à¨≥¨≥¨≥¨≠¨≥¨≥¨≠¨≥¨≠àà^à^â¨≥à≠ààÇàÇà]Ç^Ç]Ç^à^à^à^à^Ç]Çà≠¨¨Ç¨¨≠à¨#ŨǨŨǨÇàÅ]V\V]V]V]V\V]V]V]V\V]V]V]]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]WÅ]Ç]àÇà^àÇà^àÇàÇ≠à≠¨≥≠≥¨≥ÇÅV]V]V]V]V]]Ç^àÇà^àÇà^˛à@^àÇà^â¨≠àà^à^à^Ç]àÇà^à^àÇà^à^Çà≥≠≥≠≥≠≥≠≥¨◊≠≥¨≥≠≥à≠ÇàÇâà≠à≠ÇàÇàÇà^˛àÇà^Ç^˛à4ÇàÇà^àǨ¨≥¨¨à≥¨¨Ç¨à¨Ç¨à¨à¨àÇV]V]V]V]V]V]V]V]V]V]V]V]V˛V]V\V]˛V]V\V]˛V]V\V]˛V]V\V]˛V]V\V]˛V]V\V]˛V]V\V]˛V]V\V]˛V]V\V]˛V]V\V]˛V]V\V]˛V]V\V\˛V$]W^]Ç]^]Ç]Ç]Ç]^]ÇÇàǨà≠¨≥¨≠¨¨Å]V\V\V]˛Va]WÇ^à]Ç^Ç]Ç^à]àÇà]Çà≠à¨ÇÇ]Ç]ÇW^^à]Ç]Ç]à^Ç]^]àà≠¨≥¨≥¨≥à≠¨≥ਨ≠ààÇàÇàÇà^Ç]Ç]Ç]à]àÇàÇà^Ç]Ç^à^Ç]Ç]à^ÇDz¨Ũà≠à¨Å¨Å¨Å¨Å¨Ç¨Å]V\V\V]˛V]V\V]˛V]V\V]VVtÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]VÅV]V]V]]Å]Ç]à^à^àÇàÇàÇàÇàÇàÇ≠˛à≥≠≥≠≥≠≥¨≠ÅÅV]V]VÅV]WÇ^à^àÇà^àÇà^˛à0ÇàÇ≠à≥¨à]Ç^Ç^àÇàÇàÇà^àÇàÇà^ÇÇ≥≠≥≠◊≥≥≠≥≠◊≠≥¨≥¨≠ààDzàÇàÇàÇà^Ç^àÇààâÇàÇàÇààâàà^˛à^à¨≠˛¨    ≠¨≠à¨Ç¨à¨à˛¨à¨]]V]V]VÅV]V]V]VÅV]V]V]VÅVnV]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V]V]W]]à^à^à^àÇà^àÇàDzàǨà≠Çàà≥¨≥¨≥¨≠¨à]]V]V\V]V]]Ç]Ç^à]Ç^à]ÇÇà^Ç^àÇ≠¨≠^^]Ç]ÇÇà]àÇà]Ç^Ç]Ç^à]à¨≥¨≥¨≥¨≠¨≥¨≥¨≠à¨àà^Ç]Ç]àÇà^àÇÇ]Ç^à^à^à^àÇà]àÇà^Ç^à]ÇÇ≠à¨à¨'Ǩà¨Å¨Å¨Å¨Ç¨Å¨ÅÅV\V]V\V]V\V]V\V]V\V]V\V]Z]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]VŞ]Ç^à^àÇàà≠ààÇàÇàÇ≠à≠à≥¨≥¨≠à≠à≥≠≥¨≥≠≠à¨]]V]V]V]WÇ]à^Ç^à^Ç^àÇà^à^Ç^àà≠à≠ÇÇ]à^à^àÇàÇàÇÇ]àÇàÇàà≠≠◊≠≥≠◊≠≥¨≥à≠ÇàÇàÇà^Ç]Ç^àÇàÇàÇà^àÇàÇàDzàÇà^Ç^àÇà^àÇàà≥¨¨Ç¨à¨Ç¨Ç¨à¨à¨à˛¨]]V]V]V]V]V]V]V]V]V]V]V]V˛V]˛V\˛V]˛V\˛V]˛V\˛V]˛V\˛V]˛V\˛V]˛V\˛V]˛V\˛V]˛V\˛V]˛V\˛V]˛V\˛V\˛V,]V]]^]^]Ç]Ç^àÇ≠àà^Ç]Ç]àÇàÇ≠¨≥¨≠¨¨à¨à≠¨≠¨≥¨¨Çà˛V\˛Va]W^]Ç]Ç]Ç]Ç^Ç]Ç^Ç]ÇÇ≠à≠àà]^]Ç]Ç^à]Ç^Ç]Ç]Ç^à^àà≠¨≥¨≥¨≥¨≠Çà^Ç]Ç]àÇÇ]^]Ç]Ç]Ç^à^Ç]à^à]ÇÇà^Ç^Ç]^]à]^]àDz¨ŨŨŨŨŨŨŨǨÅÅV\˛V\˛V]˛V\˛V]˛V\VV]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]VÅ]Å]àÇà^àÇà^à^ÇÇ≥≠≥ààÇà^àÇàÇàà≥≠◊≠≥¨≠à≠¨≥≠≥≠3≥¨≠àà]]V]V]WÇ^à^à^à^à^Ç^àÇà^àÇ≠¨≥¨à^àÇà^à^à^àÇà^àÇàÇ˝à≥≠≥≠◊≥◊≠◊≠à^à^Ç^àÇà^àÇÇ^à^Ç^˛àDzà
  2633. ^àÇàÇàÇàÇàDzà^Ç^≠¨≥¨¨à¨Å¨à¨Ç¨à¨Ç¨à˛¨Å]V]V]V]V]V]V]V]V]V]V]V]VV\˛V]V\V\˛V]V\V\˛V]V\V\˛V]V\V\˛V]V\V\˛V]V\V\˛V]V\V\˛V]V\V\˛V]V\V\˛V\˛V4]V]]Ç]Ç^à]Ç^à]Ç^Ç]àà≥ààÇà]^]ÇÇàǨà≠¨≠¨≠¨≠à≠¨≥¨≠¨≥à¨ÇDzVc\V]]à^Ç^Ç]à^ÇW^^à]Ç]àà≠¨≠Ç^]à]Ç]Ç]Ç^Ç]Ç^à^àÇà^àà≥¨≠¨≥à≠¨≥ÇÇ]Ç]Ç^à]Ç^à]Ç^Ç]Ç^à^à^à]Ç^à]ÇÇà]àÇà]à^Ç]ÇDz¨à¨Å¨Å¨Å¨Å¨Å¨Å¨Å¨ÅŞV]V\V\˛V]V\V\˛V]V\V\]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]WÇ^Ç^àÇà^Ç^Ç^à^à^àÇ≠¨≥àà^à^ÇÇàà¨à≠¨≠¨≥≠≥¨≥¨≥¨≥≠≥¨≠à¨ÇàV]V]WÇ^à^Ç^˛àh^Ç^à^Ç^Ç^≠¨≥¨â^Ç^Ç^Ç^àÇà^Ç^àÇàÇàÇàà≠¨≥¨≠à≠à≠¨≠Çà^ÇÇà^àÇàÇà^àÇà^Ç^àÇà^àÇàÇàÇà^à^Ç^Ç^à^àÇàà≥¨¨Å¨Å¨Å¨à¨Å¨à¨à˛¨ÅÅV]V]V]V]V]V]V]V]V]V]V]V2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V@\2VV\V]W]W^]Ç]Ç^à]^]Ç]Ç]Ç]Ç]àà≠¨¨^Ç]Ç]Ç^àÇàǨà¨à≠¨≥¨≠à≠¨≠à¨ààÅàÅŞV]]Ç^ÇWÇ^à]^]Ç]Ç]Ç]Çà≠¨≠Ç^]Ç]Ç]^]Ç]Ç]Ç]à]Ç]Ç^àÇàÇà^àÇàÇ≠Çà]Ç]Ç]Ç]Ç^à^Ç]Ç^Ç]Ç^à]Ç^à]Ç]Ç]Ç]Ç]Ç]Ç]Ç^à]à¨≠ÇàÅàŨŨÅàŨŨŨÅÅV\2VV\2VV\˛V\2VV\˛V\2Vw]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]]ÇÇàÇà^àÇà^à^Ç^àÇà^à^àà≥≠≥àâÇàÇàÇÇ^àÇàà≠¨≠¨˛≥P¨≥¨≥≠≥¨¨Å¨à¨ÇÅV\Và^Ç^àÇàÇà^àÇàÇÇ^àÇà¨≥≠à^Ç^à^à^ÇÇàÇà^àÇÇ^àÇàÇàÇà^àÇàÇ≠¨âÇà^àÇàÇà^˛à^àÇàÇàÇàDzà>ÇàÇÇ^àÇÇ^àÇàÇà^Ç^àà≥¨≠à¨Å¨à¨à¨à¨Ç¨à¨à¨ÅÅV]V]V]V]V]V]V]V]V]V]V]VV\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V4Ç]à^à^àÇà]Ç]Ç]Ç^Ç]Ç^Ç^à¨≥àà^Ç]Ç]Ç]ÇÇàÇàà≠à¨à≥¨≠¨≠¨≠¨¨˛ÅiàÅàÅÅV]]Ç]Ç^Ç]Ç]Ç^à^Ç]Ç]Ç^¨¨≥ÇÇ]Ç]Ç^à]Ç^Ç]Ç^Ç]Ç^à^Ç^Ç]Ç^à^àà≠Çà^Ç]ÇÇà]Ç]Ç]Ç^Ç]à^à]Ç^à^à^Ç]Ç^à]Ç^Ç]Ç^Ç]Ç^àà˛¨ÅÇŨŨŨŨŨŨÇàV\V\˛V\˛V\˛V\˛V\˛V\]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V\V]V]V]V]]àÇà^àÇàÇà^Ç^àÇà^à^à^àà≥¨≥Çà^Ç^Ç^àÇàÇàà≠¨≥à≠¨≥≠≥¨≥¨≥ààÅÇÅàǨÅÅ]Å]àÇà^à^Ç^˛à^à^Ç]àà≥¨≠^à^Ç^à^àÇÇ]˛Ç9]àÇàÇàÇÇ^àÇàÇàÇ≠¨≠àà^ÇÇàÇà^Ç^à^à^àÇà^à^àÇàÇà^àÇàÇàÇà^àÇà^à˛Ç+≠¨≠ǨŨŨà¨Å¨Ç¨Å¨à¨ÅÅV\V]V]V]V\V]V]V]V\V]V]Vı˛V\2˚V\2˚V\2˚V\2˚V\2˚V\2˚V\2˚V\2˚V\2˘V^]Ç]^]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç^àà≠àà]Ç]Ç]Ç^àÇàÇàÇ≠¨≠à¨à≠¨≠¨≠ààÅÇ]ÅÅàÇàÅÅW^]Ç]Ç^Ç]Ç]à]Ç^Ç]^^≠¨≠ÇÇ]Ç]Ç^Ç]Ç]^]à]Ç]à]Ç]Ç]Ç^à]Ç]ÇÇ≠àà]Ç]Ç]Ç]Ç]7Ç^à^Ç]Ç]Ç]à^Ç^à]Ç]Ç]àÇàÇà^Ç]ÇÇà]Çà≠à¨ÅàÅàŨŨŨÅàŨÅà]\2˚V\2˚V\2¸Vp]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V]V\VÅ]Ç^à^à^à^Ç^à^à^àÇà^à^àà≥≠≠àà^Ç^àÇàÇ≠˛àK≠≠≥≠≥¨≠¨≥≠≥¨≥à¨ÅàÅÇŨà¨Åà^Ç^àÇà^àÇÇ^àÇà^à^à¨≥≠à^àÇà^àÇà^à^ÇÇàÇàÇàÇÇ^àÇàÇà^ÇDz≠VÇà^àÇà^Ç^àÇàÇàÇà^àÇàÇàÇàÇàÇàÇàÇàà≠ààÇàÇà^àÇ≠¨≥¨¨Å¨Å¨Å¨à¨Å¨à¨Ç¨ÇÅV]V]V]V]V]V]V]V]V]V]V]VV\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˛V\2VV\˝V2VVÅ]Ç^à]Ç^Ç]^]Ç]à^à]Ç^Ç]à¨≥àà^Ç]Ç^Ç]ÇÇàÇàà≠¨≠¨≠Ǩ¨≥¨≠¨≠ÇàÅÇ]ÅÅàÅàÇÇ]Ç]Ç]àÇà]Ç^à]Ç^àÇ≠¨≠ÇÇ]Ç]Ç^à^Ç]Ç]Ç^à]à^à]Ç^à^à^Ç]àà≠Çà^Ç]à^Ç;]Ç^à]Ç^à]Ç^Ç]àÇà^àÇà]ÇÇà^àÇà^àÇà]^^àà≠¨¨ÅáŨÅàŨÅàŨŨŨ]\V\˛V\2VV\˛V\2VV\˛V\\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V\V\V]WÅ]à^à^àÇÇ^à^à^àÇàÇàÇà^àà≥¨≥àà^àÇà^àÇàǨà≠¨≥≠≥¨¨à¨¨◊≠≥¨≠à¨Åà˛Å[¨Çà^à^Ç^àÇà^à^Ç^àÇà^àà≥¨≠^Ç^àÇà^àÇà^àÇà^àÇàÇàÇàÇàÇà^àÇ≠à≠Çà^àÇà^àÇà^à^à^à^à^àÇàÇàÇàÇà^Ç^àÇÇ^˛àÇà^àÇ≠¨≠à¨Å¨Å¨Å¨Å¨Å¨Å¨Ç¨Çà˛V]V\V]V\V]V\V]V\V]V\V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2VV\V]W^]Ç^à]Ç^Ç]Ç^Ç]à^Ç]à^à]Ç^àà≠¨à^àÇà]Ç]àÇàÇàÇ≠¨≥à¨ÇàŨ¨≥¨≠¨¨ÇÇÅà]ÅÅàÅÇ]à^Ç^à]Ç]Ç]^]à]Ç^¨à≠àà]Ç^à]à^à]Ç^à]Ç^à^à^à]à^Ç]Ç^ÇǨàà/]Ç^à]Ç^Ç]Ç^Ç]Ç]Ç]Ç]Ç]Ç^Ç]Ç]Ç]Ç^Ç]àÇà]Ç^à]àà≠à¨Åà˛Å
  2634. àÅàŨÅàŨŨÅ\2˛V2˛V2˛V2˛V2˛V2V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]V\V]W]]à]Ç^Ç^àÇàÇà^Ç^à^àÇà^àÇà^àÇàà≥≠≥ààÇà^àÇàÇ≠ààÇ≠≠≥≠≥¨¨Ç¨à¨¨3◊≠≥¨≠¨¨ÅàÅÇÅàÇàà≠àâÇà^à^Ç^àÇàÇàà≥≠≠ÇàÇàÇâààÇà^Ç^àÇàDzàDzà(^ÇÇà^≠¨≠àâààÇàÇàÇàÇÇ^àÇàÇàÇÇ^àÇà^àÇà^àÇàDzà2ÇàÇàÇàà≠¨≥¨¨Å¨Å¨Å¨à¨Å¨à¨Å¨¨àV]V\V]V\V]V\V]V\V]V\V]VV\˝V2VV\˝V2VV\˝V2VV\˝V2VV\˝V2VV\˝V2VV\˝V2VV\˝V2VV\V]W]]Ç^à]^]Ç]Ç^à]Ç]Ç]Ç]Ç]Ç^Ç]Ç^Ç^à¨≥àà^à]Ç]Ç]àÇà^àà≠¨≠¨≠ÇàÇàǨ¨≥¨≠¨≠ÇÇÅÇ]ÅÅàÇâàâÇà^Ç]Ç]Ç]à^Ç]à¨≥àà^Ç]àÇà]Ç]Ç]Ç^Ç^àÇà^à^à^Ç]à0]ÇÇ≠àà^àÇÇ^à^àÇà]^]àÇà^Ç]^^à]Ç^à^àÇà^àÇà^Ç^à^Ç^àDz¨ÅàÅà˛Å¨Å¨Å¨ÅàŨÅ]VV2VV\˝V2VV\˝V2VV\\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\VÇ^Ç^àÇà^à^Ç^àÇà^à^à^à^à^à^à^Ç^Ç^àà≥≠≥àà^à^Ç]ÇÇàÇàà≠¨≥≠≥¨¨ÇàǨà1≠¨≥≠≥¨≠ààÅàÅÇÇ≠à≠à≠ààÇà^Ç^àÇà^àà≠¨≠àÇ]àÇà^àÇà^àÇÇ^˛àÇàÇàÇàÇà^à^àà≠ÇÇ^àÇàÇà^àÇà^ÇDzàD^à^àÇà^Ç^àÇàÇàÇàÇà^àÇà^ÇÇàà≠¨¨ÅáŨŨŨŨŨŨǨ]]V\V\V]V\V\V\V]V\V\V\V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛VO2W]à^à^à]Ç^Ç]Ç]Ç]^]Ç]Ç]Ç]Ç^Ç]^]Ç]^]àà≠àà^Ç]Ç]^]ÇÇàÇàà≠¨≠à¨ÇàÅàÇàǨà≥¨≠¨¨ÅÇÅÅ]ÇÇâ˛à[≠ÇÇ^Ç]Ç^à]^]àà≠àà]^]Ç]Ç^à]Ç^à]Ç^à^Ç]Ç]ÇÇà^Ç]ÇǨààW^^à^Ç]Ç]Ç]Ç]Ç^à^à^Ç]à^Ç]Ç^Ç]Ç^Ç]Ç]Ç]à^Ç]àDz¨Çà˙Å
  2635. ¨ÅàÅàŨÅÅVV2V2˛V2˛V2˛V2˛V2V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V]WÇ^àÇàÇàÇà^àÇÇ^Ç^Ç^àÇà^à^à^à^Ç^à^ÇÇ≥≠≥ààÇà^à^àÇàÇàà≠≠≥¨≥¨¨ÅàǨÇP¨à≠¨◊≠≥¨≠ààÅàÅàà≥à≠à≠Çà^àÇàÇà^àÇ≠¨≠àà^Ç^àÇàÇàÇàÇàÇà^àÇà^Ç^ààâÇÇ^àà≠àà^ÇÇà^Ç^àÇàÇà˛ÇâààÇàÇà^àÇàÇàÇÇ]ÇÇà^àÇÇ^˝à)◊¨¨Å¨Å¨Å¨Å¨Å¨Å¨Å¨à¨]ÅV\V\V\V]V\V\V\V]V\V\VVV2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛VK2VV]]^^Ç]à^Ç]Ç^Ç]^]Ç]Ç^Ç]Ç^Ç]Ç^à]Ç^Ç]à¨≥àà^à]Ç^à]ÇÇàÇàà≠¨≠¨≠ÅÇÅàÅÇÅàǨ¨≥¨≠¨¨¸Ådàà≠à≠Çà]Ç^à]Ç^Ç^àà≠àà^Ç]Ç^Ç]à^à]à^Ç]Ç^à^Ç]Ç]à^Ç]ÇÇ≠àà^Ç]à^Ç]Ç^à^àÇà^àÇ≠Çà^à]Ç]à^à^Ç]^]à^Ç]Ç]ÇÇàਨ≠Çà¸Å
  2636. àÅàŨÅàŨÅÅVV2˛V2˛V2˛V2˛V2˛VVV\V\V\˛V\V\V\˛V\V\V\˛V\V\V\˛V\V\V\˛V\V\V\˛V\V\V\˛V\V\V\V]]à^Ç]à^Ç]Ç^Ç]à^Ç^àÇà^à^à^à^à^à^Ç]àà≥≠≥àà^àÇà^à^àÇàà¨à≥≠≥¨¨ÇàÅàÅàǨà≠¨◊≠≥¨¨ÅÇÅÇÅàà≠ààÇà^à^à^Ç^àà≠à≠Çà^Ç^à^Ç^à^àÇà^àÇàÇàÇà^#à^Ç]àÇàà≥àà^àÇà^à^àÇâàâà≠à≠à≠ÇàÇà^Ç^˛à^à^Ç^àÇÇ]Ç^àÇâà≠¨¨˛Å¨Å¨Å¨Å¨Å¨Å¨Å¨ÅÅV\˛V\V\V\˛V\V\V\˛V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2V2VWÇ]^W^]Ç]^]Ç]^]Ç]^]à]Ç]Ç]^]Ç]Ç^Ç]^]à¨≥àà]Ç]Ç]^]Ç]àÇàÅàÇ≠¨¨ÇàÅÇÅÇC]ÇÅàǨ¨≥¨¨à¨ÅÅ]Å]àà≠ÇÇ]à^Ç]Ç]Ç^àà≠àà]Ç^à]Ç]à]Ç]Ç]Ç]Ç]Ç^à^Ç]^]Ç]Ç^àà≠˛^,àÇàÇà^ÇÇà^àÇàà≠àà]Ç]Ç]ÇÇà]Ç]Ç]àÇà]^]Ç]àÇàà¨àà˛Åá˙ŨÅàÅÅVV2V2V2V2V2V2V2V2V2V2V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V]V\V\V\V\V\V\V\VàÇÇ^Ç^à^àÇà^à^Ç^à^à^àÇà^àÇà^Ç^à^à^Çà◊≠≠Çà^Ç^à^àÇ≠ààÇàǨà≥¨¨Ç¨ÇàÅ àÅàǨà≠¨≥≠≥¨¨˛ÅÇŨàà^àÇàÇÇ^à^àDz≠ÇàÇàÇàÇàÇà^Ç^àÇÇ^àÇàÇàÇÇ^˛à$^àà≠ààÇàÇ≠ààÇàÇàÇâÇàÇ≠¨≠ÇàÇà^àÇàÇàÇàDzàÇà^ÇÇàÇàà≥¨≠ŨŨŨŨŨŨŨŨÅŞV]V\V\V\V]V\V\V\V]VVV2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V42VV]V]]Ç]Ç^Ç]à^à]Ç]Ç]Ç^à]Ç]Ç]Ç^à]Ç]à]Ç]Ç]à¨≥àà^Ç]Ç]Ç]˛àNÇàÅàÅàà¨ÇàÅàÅÇÅàÅÇÅàǨ¨≥¨≠à¨ÅÅ]Å]à^à^à^Ç]Ç^Ç]àà≥àà^à^à^Ç]à^Ç]Ç^à]Ç]à]Ç^Ç]Ç^à]ÇDzà^àÇàÇà^àÇà]Ç^à^àÇ≠Çà^à^à^à]Ç^Ç]˛à
  2637. ]Ç^Ç]Ç^à^àà≠¨¨¸Åà˛Å    ¨ÅàŨÅà\V1˛V2˛V2˛V2˛V2˛VVV\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\V]V]V]WÇ^Ç^àÇà^à^à^à^Ç^à^à^à^Ç]Ç^à^à^Ç^à^Ç^àà≥≠≥Çà^à^à^àÇààâÇàÅàŨǨÇàÅàÇàÅàÅàŨà≠¨◊≠≥¨¨ÅÅ]àÇà^à^Ç]àÇà]àà≠¨≥àà^àÇà^Ç^à^àÇà^Ç^àÇàÇà^à^Ç]à^àÇ≠ààÇâàà^˛à ^Ç^àÇàÇàà≠Çà^˛à'^àÇà^ààâÇà^Ç^àÇÇ^àǨ¨≥àáŨÅáŨŨŨŨŨÅŸV\˛V\˛V\˛V\˛V2V2V1V2V2V2V1V2V2V2V1V2V2V2V1V2V2V2V1V2V2V2V1V2V2V2V1V2\V]W^W^]Ç]Ç]Ç]Ç]Ç]Ç^à]^]Ç]^^ÇW^]Ç]Ç]^]Ç]Ç]ÇÇ≠¨≥àà]^]à]^W]]àÇàÅÇÅàÅÇÅàÅÇÅÇÅÇÅDzÅ4àǨ¨≥¨¨àà]Ç]à^Ç^Ç]^]à]Ç^àà≠àà]^]Ç]Ç]Ç]Ç^à]^]à^à^à^Ç]Ǹ]!ÇÇà]ÇÇà^Ç^à]^]Ç^à^àÇ≠àà]^]à]Ç^Ç]Ç]˛à
  2638. ]Ç]Ç^à]^]ÇDz¨ˆÅàÅáŨVV2V2V2V1V2V2V2V1V2V2V\˛V\V\V\˛V\V\V\˛V\V\V\˛V\V\V\˛V\V\V\˛V\V\V\˛V[\V\WàÇà^à^à^à^Ç]à^à^àÇà^àÇà^àÇà^à^à^àÇà^à^à^Ç^àà≥≠≥ààÇà]Ç]]W]]Ç]àÅàÇàÅàǨÇàÅàÅàÅàÅàǨà≠¨≥¨≠DzàÇàÇàÇà^Ç^à^àà≥¨≠àà^Ç^à^Ç^¸à/^à^àÇÇ^à]Ç]Ç]Ç]Ç]àÇàÇà^àÇà^à^àÇàÇàÇ≠¨≠Çà^Ç^àÇàÇà˛Ç àÇàÇàÇà^Ç^àÇ≠¨≠ǨÅáŨÅàŨŨŨŨÅŞV\˛V\V\V\˛V\V\V\V2V2˛V2V2V2˛V2V2V2˛V2V2V2˛V2V2V2˛V2V2V2˛V2V2V2V2VV]^à^Ç^à^Ç^ÇW^]Ç]Ç^Ç]^]à^à^à]Ç^à]Ç^à]Ç]Ç]Ç]Ç]àà≥ààÇà]ÇW]W]2W3]]ÅÅÇÅÇÅàÅàÅÇÅÇÅÇÅÇÅÇÅàǨààÇà^à^Ç]Ç]àÇà]^]Ç]àà≠àà^^]Ç^ÇWÇ^àÇà^Ç]^]^W˛]W]]Dz]2Ç]à^Ç]^]Ç]Ç]Ç^à^Ç]àÇ≠àà^à]Ç^à]Ç^à]Ç]Ç]àÇà]Ç]Ç^àà≠ਯÅ
  2639. àÅáŨÅàÅ]2V2V2˛V2V2V2˛V2V2VVV\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V8]]à^à^à^à^Ç^à^Ç]Ç^Ç^Ç^Ç^àÇÇ]à^Ç^à^Ç^àÇÇ]àÇà]àÇàà≠ÇàÇàÇÇWDz]àÇà˛ÅÇÅàÅàŨÇàÅàÅÇÅàÅàÇàÇàÇàÇà^à^Ç]˛à4ÇÇ^Ç^àà≠¨≠ÇÇ]àÇà^à^Ç^à^Ç]^W]WÇ]Ç]Ç]Ç]Ç]Ç]àÇàÇà^ÇÇà^Ç]˛à%^àÇàà≠àà^à^Ç^àÇàÇà^Ç]àÇà^àÇÇ^àਨ≥à¨Åá˛Å ¨Å¨Å¨Å¨Å¨ÅÅV\˛V\˛V\˛V\˛V\˛Vp1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1VV]]^]Ç]Ç^Ç]^]Ç]^]Ç]^]^]^]ÇW^]Ç]^]Ç]Ç]Ç]Ç^à]Ç]Ç]Ç^Ç]ÇÇà]Ç]Ç]˛àCÇÅ]Å]ÅÅàÅÇÅàÅÇÅÇ]Å]Ç]Ç^Ç]Ç]Ç]^]Ç]^]à]Ç]Ç]Ç^àà≠àà]Ç^à]Ç]ÇW]W]W]WW3]]Dz]5à]Ç^Ç]Ç]Ç^à^à]Ç^Ç]Ç^à]Ç]àÇ≠àà]Ç]Ç]Ç^à]Ç^Ç]Ç^à]ÇÇà]ÇÇàDz¨ˆÅá˛Å´Å]VV1V2V1V2V1V2V1V2V1V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛VB\V]]à^Ç^àÇà^Ç^Ç^à^à^àÇà^Ç^à^à^à^à^à^àÇàÇàÇàÇàÇà^à^Ç^Ç]ÇÇ≠ààÇ≠à≠à≠àà˛ÅoàǨÇàŨÇàÇàÇàÇà^àÇà^Ç^àÇàÇà^à^à^Ç^à^àÇ≠¨≠àà^à^à]Ç]Ç]]WÇ]]WÇ]Ç]àÇàÇàÇàÇàÇà^àÇÇ^àÇÇ^àÇàÇàÇÇ^à¨≥àà^àÇàÇàÇàÇàÇàÇÇ^àDzàÇàÇ≠¨≠¨¨˛Å¨ÅáŨÅàŨŨŴ]\V\˛V\˛V\˛V\˛V\VVV2V2V1˛V2V2V1˛V2V2V1˛V2V2V1˛V2V2V1˛V2V2V1˛V2V2VV]^Ç]^]Ç]Ç]Ç]Ç^Ç]Ç^à]Ç]Ç]Ç^à^Ç^à]Ç^à^à]Ç]à^à]^]^W]W]W]]àÅàà≠à≠à≠ÇÇ]Å]ÇÅàÅÇÅà]Ç^à^à^Ç]Ç^Ç]Ç^Ç]à^à]^]Ç]Ç^Ç]àà≠àà]^W]W]3]W]W]]Ç>]^]Ç]Ç^à^Ç^à^à^Ç]Ç^ÇW^]Ç]Ç^à^à^ÇWÇÇ≠ààÇÇ]àÇà^àÇà]Ç^Ç]Ç]ÇÇàÇà]ÇDz¨ÅÅĘÅ
  2640. àÅ´ÅÅVV2V2V2V1˛V2V2V1˛VVV\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V0Å]à^Ç^Ç^à^à^àÇà^Ç^Ç^Ç^Ç^Ç^à^à^Ç^à^ÇÇàÇà^à^à^à^^]]˛W;]W]]àǨà≥¨≠à≠àÇ]ÅÅàÅàÇà^à^àÇàÇà^à^Ç^à^Ç]àÇà^à^Ç^àÇÇ^àÇ≠¨≥ÇÇW˛]0W]W]]Ç]Ç]à^Ç]àÇÇ^à^àÇàÇÇ]à^à^Ç^Ç^à^Ç^àÇà^ÇÇ≠¨≥àà]˛à ÇàÇàÇà^Ç^à^Ç^˛àÇàÇàà≥¨¨¸Å´˛Å¨ÅàŨÅÅ\\˛V\˛V\˛V\˛V\˛V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1VWÇ]Ç^à]Ç^à]Ç^à^Ç]^]^]Ç]^]^]Ç]Ç]Ç]Ç]Ç^Ç]Ç]^]^^à]]3]2]W]]ÇÇàÅàǨà≠à≠ÇÅ]Å]àÅà#]Ç^Ç]Ç^à]Ç]Ç]^]Ç]Ç]Ç]Ç]Ç]Ç^à]Ç]ÇÇ≠àà˛WI]W]]^]Ç]Ç]Ç]Ç]Ç^à]Ç]Ç]Ç^Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]à]àÇ≠à≠àà^Ç^à^àÇàÇàÇà]Ç]Ç]Ç^à]Ç]Ç]˛¨ÅÅÄÙÅVV2V1V2V1V2V1V2V1V2V1V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\¸VÅ]àÇàÇàÇà^à^à^àÇà^à^à^à^Ç^à^Ç^à^Ç^à^Ç^àÇà^Ç^ÇÇ≠ÇÇ]à]ÇÇ≠à≠à¨Å¨à≥≠≥à≠àÇ]àà≠ÇàÇà^àÇà^à^Ç^à^Ç^àÇà^à^Ç^à^Ç^à^^]¨¨≠ÇÇ]^]àÇà^àà≠ààÇÇ^àÇ%àÇàÇÇ^àÇàÇàÇà^àÇà^à^Ç^àÇà^àà≠¨≥¨≠ààÇàDzàÇ≠ààÇàÇà^àÇà^àÇà^àà≥¨¨˛Åá˛Å¨ÅáŨÅá\]˛V\˛V\˛V\˛V\˛V\Vr2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V2V1V1VW^]Ç]Ç]Ç]^]Ç]Ç^Ç]^]Ç]Ç]^]^]Ç]Ç^Ç]Ç]Ç]^^Ç]^]^WÇÇàÅàÇàÇàà≠ààÇàDz¨$ÇàÇà]Ç^≠àà]à^Ç]Ç]^]Ç]à^à]^]à]Ç^à]Ç]ÇW˛]RW]]¨àà]^]Ç^à^ÇǨààÇà^Ç^à]^]Ç]à^Ç]à^Ç]Ç^àÇàÇÇ]Ç^à]Çà≠à¨ÇàÇàÇà]ÇÇà]ÇÇàÇà^à^Ç^à]Ç^Ç]^]˛¨ÅÅĘÅáÅÅVV1V2V1V2V1V2V1V2V1V2VÛV2˙V2˙V2˙V2˙V2˙V2˙V2˝V;Å]Ç^Ç^Ç]Ç^Ç^à^Ç^à^Ç^à^Ç]Ç^Ç^à^à^à^à^à^Ç]Ç]^W]WÇÇ≠¨≠à≥≠≠à≠ààDz≠Çà^à^à^àà≥àÇ^à^Ç]Ç^Ç]àÇà^à^Ç^à^à]Ç]à]ÇW]W]WÇÇ≠àà^àÇàÇà^àà≠à≠àà^à^Ç^Ç^àÇà^àÇà^àÇàÇâàà^àÇà^àÇ≠¨≠ÇÇ^àÇàÇà^àÇàÇàÇ≠ÇÇ^àÇàÇàÇà^à^Çà≥¨¨¯Åá˛ÅáÅÅ˝V2˙V2˙V2[1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V]^W^]^]Ç]Ç]Ç^à]Ç^à]Ç]Ç]^]Ç]Ç^Ç]^]Ç]Ç]Dz]9^W]W]WÇÇ≠¨≠¨≠Çà^à]Çà≠àà]Ç]Ç^Ç]à¨à]^]^]^]Ç]^]à]Ç^Ç]^W^W]W]W˛]DW]W^]Ç^Ç]Ç]Ç]à]Ç]àà¨à¨ÇÇ]Ç]à]Ç]Ç]Ç^à]Ç^à]àÇÇ]ÇÇà]^Ǩà¨àà]^]Ç]à^Ç]ÇÇà^˛à]Ç]Ç^à^Ç]à^Ç]à¨≥ÇÅÄÅĈÅVV1V1V1V1V1V1V1V1V1V1V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\˛V\¸VÅ]Ç^Ç^à^à^àÇà^à^àÇâÇà^à^Ç^àÇà^Ç]^]àÇà]Ç]Ç]Ç]^]àÇ≠¨◊≥◊≠≠Çà^àÇ≠¨≥ÇÇ^àÇà^àà≥àà^Ç^à^àÇà^Ç^à^à]Ç]]WÇ]]WÇ]à]Ç]Ç^à^à^à^Ç^àÇà^àà≠à≥¨à^à^à^àÇÇ^àÇà^à^à^àÇà^¸à^≠¨≠àà^Ç^Ç^àÇàÇàÇàà≠à≠Çà^àÇ˛à    ^àÇàÇàà≥¨¨˛Åá˛Åá˛Å¨ÅáÅŞV\˛V\˛V\˛V\˛V\V\2V1V1V1V2V1V1V1V2V1V1V1V2V1V1V1V2V1V1V1V2V1V1V1V2V1V1VWÇ^Ç]Ç]Ç]Ç^Ç]^]Ç]Ç^à]Ç]Ç]Ç^Ç]Ç]^W]W^W]W˝]^WÇÇàà≠¨≥¨≥àà]^^àÇ≠àà]^]Ç]Ç^≠¨à]Ç]^]Ç]Ç^Ç]^]^W]W]3]W]W]]Ç]Ç]Ç]Ç]^]àÇà]^^à^àǨà¨à≠^^]Ç]Ç]Ç]^]à]Ç^Ç]Ç]Ç]Ç^à^à^àà≠ÇÇ]Ç]Ç]Ç^Ç]àÇà]àà≠àà]Ç]àÇÇ]Ç]Ç]Çà¨à≠¨áÄÙÅVV1V2V1V1V1V2V1V1V1V2VV2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˛V2˝VÇÇàÇàÇÇ^à^Ç]Ç^Ç^à^à]Ç]Ç]àÇÇ]à^Ç]^W]]ÇW^]àÇàÇàà≠à≠à≥≠◊≠≠ÇÇ^àÇ≠≠≥Çà^Ç]à^àà≥àà^Ç^à^à]Ç]^W]W]W]]Ç]Ç]à^Ç^àÇà^à^Ç]àÇà^Ç^à^àÇàà≠à≠àà^Ç^àÇÇ]Ç^Ç^à^à^à^à^˛à^àÇàà≠àà]àÇà^àÇà]ÇÇàÇàÇ≠ààÇÇ^˛à ^à^à^àÇàÇ≠¨¨ÙŨÅÅ2˛V2˛V2˛V2˛V2˛V261V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V+V]˛à
  2641. Çà]Ç]Ç]^]^]Ç]Ç˝]W^]à]^]Ç˝]4W]]Ç]àÇàà≠à≠à≠à≠à≠à≠ÇÇ]^]àà≥àà]à]^]Ç]à¨≠]^]Ç]^]]W]W]2˛]<W^]Ç]Ç^à]Ç^à]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]àà¨à≠ÇÇ]ÇÇà]^]Ç]Ç]Ç]à^Ç]ÇÇà^Ç]Ç^˛à]^^à]Ç^à]^]Ç]à^˛à]Ç]àÇà]Ç]à]à^ÇWÇÇ≠à˛ÅVÅÄÅ\˙ÅVV1V1V1V1V1V1V1V1V1V1V˲V2˙V2˙V2˙V2˙V2˙V2˙VQ1VVàà≥à¨à≠Çà^à^Ç^à^Ç]Ç]Ç]Ç^à]Ç]Ç]à]Ç]àÇàÇ≠à≠à≥≠≥à≥≠≠à≠à≠¨≠Çà^àÇ≠≠≥àÇ^à^à^àà≥àà]^]Ç˝]W]W^]à]Ç^à^àÇàÇà^àDzàD^àÇÇ]àÇÇ^à^Ç^àà¨à≥¨à^àÇàÇàÇÇ^àÇà^àÇà^àÇàÇà^ÇÇâà≠àà^àÇàÇàÇàÇà^àà¨à≥àà^˛à
  2642. ÇàÇàÇàÇà^ÇǨ¨≠ÒÅ˚V2˙V2˚Va1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1]Å≠à≠à¨ààÇàÇà^Ç]^W^]Ç]Ç]Ç]]W^]Ç]Ç]ÇÇ≠à≠à≠à≠à≠˛à≠Çà^àÇ≠àà]Ç^àà≠¨à]^]Ç]Ç^≠¨à]]W]W]W]W]W^]Ç]Ç^Ç]Ç^à]Ç]Ç]ÇÇà]Ç^Ç]^^à]Ç]Ç]àÇàǨ¨≠ÇÇ^à]Ç^à]Ç^à]^]Ç]Ç^Ç]Ç]Ç]àÇàà≠ÇÇ]Ç^à^Ç^à^àǨà≠àà^à^
  2643. à]Ç]Ç]Ç^à]Ç]àDz¨ÅÅVÅV˛ÅĸÅVV1V1V1V1V1V1V1V1V1V1VV1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V 1V2VVàà≠à≠¨≠à≠ààÇ≠Çà^àÇà^ààâÇà]Ç^˝à≠à≠à≠à≠à≥à≠à≠àà^àÇà^≠¨≠Çà^ÇDz≠Çà^Ç]à^àà◊Ç]W]]^]Ç]^]Ç^Ç]Ç^Ç]Ç^à^à^Ç]à^Ç^àÇà]ÇÇà^à^à^àÇàÇ≠¨≥àâÇà^à^Ç^àÇàÇà^Ç^à^Ç]Ç^Ç]àÇà^≠≠à^à^Ç^àÇÇ^≠à≥¨≥¨àÇàÇàÇà^Ç^à^àÇà^ÇÇ≠¨¨ÅáÅÅÄˆÅ˝V1˛V1˛V1˛V1˛V1@+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V+VVÅŨà≠à¨à¨Ç˛à^àÇàÇàÇ≠ààÇà]àà≠à≠à≠à≠à≠˝àÇàÇà]^]Ç]Çà≠àÇ]^]ÇÇ≥àà]ÇW^]Ç]à¨à3]]Ç]^]Ç]^]Ç]^]Ç]^]Ç]^]Ç]^]Ç]Ç^à]^]à]à^à^àÇàÇàà≠à≠Çà]Ç]^W^]à]Ç]^]Ç^à]^WÇ]Ç]Ç]ÇÇ≠ÇàÇà]Ç]ÇWÇà≥¨≥àà ]Ç^à]à^Ç]Ç]Ç]Ç^Ç]àà¨à¨ÅÅVÅÄÅVÅÄÅV˛ÅVV1V+V1V1V1V+V1V1V1V+VÎ˙V2˙V2˙V2˙V2˙V2˙V2˘V Åà≠¨≠¨≠à≥à≠à≠˛à[≠à≠à≠à≠à≠à≠à≠à≠à≥à≠à≠àà^àÇàÇà^Ç^àÇ≠¨≠Ç^]àÇ≠≠≥àà^Ç^Ç^àà≠àà^Ç^à^à^àÇà^ÇÇà^Ç^Ç^à^à^àÇà^àÇàÇà^Ç^˛àÇ≠à≠à≥¨≠à≥≠à^àÇà]Ç^à^à^Ç]˛à Çà^Ç^àÇà]Ç^àà≥≠≥ààÇà]ÇÇ≠≠◊≠≠ààÇà^˛à^àÇà^àÇàÇàà≠¨≠¨àÄÙÅVV1˙V2˙V2VV1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V+VVÅ]àà≠à¨à≠à¨à¨Çàà≠àâà≠à≠à≠à≠à≠ÇàÇà^Ç^à]Ç]Ç]Ç^à]Ç]ÇÇ≠àà]^^àÇ≠¨à]Ç]Ç]Ç]à^à%^Ç]Ç^à]Ç^Ç]^]à^à]^]Ç]Ç]Ç]Ç]Ç]à]Ç^àÇààâ˛àU≠à≠¨≥à≠à≠^Ç]Ç]Ç]Ç]Ç]Ç]^^à^à]Ç]Ç^à]^]Ç]àà≠à≠àà]^]àÇ≠àà^à^à]Ç]à^àÇà]ÇǨÇàÇàÇàà¨ÅÅVÅVÅÄÅV¸Å\Å1V1V1V1V1V1V1V1V1V1VV1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1]Ũà≥¨≠à≠à≠à≠à≠à≠à≠à≠à≠à≥à≠àâÇà]Ç^à^à^à^Ç^à^àÇÇ]â¨≠ÇÇ^à^â≠≥ààÇà^à^Ç^Ç^Ç]Ç]Ç^à^Ç]Ç^à^àÇà]àÇÇ]Ç^Ç^à^Ç^àÇàà≥≠≠à≥¨≠à≥¨≠à≠ààÇà^^]àÇà,^à^Ç^à^à^à^Ç^àÇàÇà^Ç^àÇàÇ≠à≠Çà^à^≠àà^àÇàÇà^Ç^˛àÇàÇàà◊¨¨à¨à¨à¨ÄÅz˛ÅÄ˝ÅáÅÅV\2V1˛V1˛V1˛V1˛V1O1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V+V1VVÅà≠ààÇàÇàà≠à≠¨≠à≠à≠˛à≠ÇÇ^à]^W^]Ç]^]^]^WÇ^à]^Ç≠ÇÇ]^]ÇÇ≥àà]Ç]Ç^^]^]^]^]^]Ç]Ç]Ç^à]^]Ç]^]à]^]Ç]ÇÇàÇàà≠à≠à≥à≠¨≠à≠ààÇÇ]Ç]Ç]ÇW^]à]Ç]Ç]Ç^Ç]Ç]ÇWÇÇà]Ç]^WÇ]Ç]àÇ-≠àà^Ç]àǨÇ^]Ç^à^à]Ç]Ç^à^Ç]à¨≥à¨ÇàÇàÅÅVÅVÅVÅVÅV˛ÅVÄVV+V1V+V1V1V1V+V1V1V˛V1˛V2˛V1˛V2˛V1˛V2˛V1˛V2˛V1˛V2˛V1˛V2˛V1˛V1˛V1\]àà≠Çà^àà≠à≥¨≥¨≥≠≠à≠à≠ààÇà^à^Ç]àÇÇ^à^à]Ç^àÇà^àà≠Çà^àÇ≠≠≥ÇÇ]àÇÇ^à^Ç]Ç^à^àÇà^àÇàÇà^^]à^àÇà^àÇâà≠à≠¨≠à≠à≠≠≥≠≥à≠ààÇà^^]Ç^Ç^à^àÇàÇà@^àÇàÇà^Ç^ÇÇàÇà^Ç]à^Ç^àÇàà≥àà^àǨà≠ÇÇ^àÇàÇàÇÇ^àÇà^àà≥≠◊¨≠à≥à¨ÅÅÄÅĘÅ\1˛V1˛V2˛V1˛V2VVP1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V2VV]]Ç^Ç]^^à^àÇ≠ààÇà^Ç^˛àEÇÇ]^^à]^]Ç]^^à^Ç]^]à^ÇÇ≠Çà]^]ÇÇ≠¨àW^^à]^]ÇW^]Ç]Ç]Ç]Ç]Ç]Ç^ÇW^]àÇàÇàà≠à≠˝à4Çà^àà≥≠≠àà]Ç]Ç]Ç]^]^WÇ^à]Ç^à]Ç]Ç]Ç^à]^]àÇà]Ç]Ç^Ç]^]ÇDzà,]Ç]Ç^àÇÇ]ÇÇà]Ç^Ç]Ç]Ç]ÇÇ≠¨≥¨≥¨≠¨≠ÇÅÄÅVÅÄÅVÅÄÅV˛ÅVV1V+V1V1V1V+V1V1V1VV1V1V1˛V1V1V1˛V1V1V1˛V1V1V1˛V1V1V1˛V1V1V1˛V1V1V1˝V]]Ç]Ç^Ç]Ç^Ç^à^ÇÇàÇà^à^àÇ≠àà^Ç^Ç^à^Ç^Ç^àÇàÇÇ]ÇÇà]≠¨âÇà^Ç^≠≠≥ÇÇ]Ç^à^Ç]Ç^Ç]Ç^à^à^Ç]Ç^à^àÇàà≠à≠à≠à≠àâÇàÇà^Ç^≠≠≥¨â^Ç]Ç^Ç]à^Ç]Ç^à^àÇà^Cà^Ç]Ç^à^à^Ç^à^Ç^àÇàÇàÇÇ^àà≠ÇàÇÇ]àÇÇ]àÇàÇà^à^à^Ç]Ç^àà≥≠≥¨◊≠≥¨≥¨ÅVÅÄÅIJÅIJÅÄÄ1V1V1V1˛V1V1V1˛V1+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1VV]]à]^]^W^]^]Ç]^W^]Ç]Ç]Ç]àà¨Çà]^W^]Ç]Ç]^]Ç]à]^]à]^Ç≠ÇÇ]^]ÇÇ≠àà]^]Ç]^]Ç^ÇW^]Ç]Ç]Ç]^]^]àà≠à≠ààÇàÇÇ]^]Ç]Ç]^W^Ç≠¨≠àà]^]Ç]^]à]^]^]Ç]Ç]Ç^Ç]^]Ç]^]à]Ç]^]ÇÇàÇàÇàÇàÇà^à^à]Ç]à]^]à]Ç]à]Ç]Ç]Ç]Ç]à¨≥¨≠¨≥¨≠¨≠ÅÅVÅVÅVÅVÅVÅVÅVV+V1V+V1V+V1V+V1V+V˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛V1˛VH1V1VVÅ^à^à^Ç^àÇÇ^à^Ç^à^à^à^Ç^âà≠à≠Çà]Ç^Ç^à^Ç^àÇàÇà^Ç^à^≠¨≠ÇÇ^àÇ≠≠≥àà^àÇà^˛à^Ç^Ç^à^Ç]à^Ç^àà≥¨≠ààDzà^Ç^^]à^à^Ç^àà≥≠≠˝àT^Ç^Ç^àÇà^Ç^Ç^àÇà^à^Ç^àÇàÇà^Ç]àÇàà≠ÇàÇ≠àà^à^à^àÇà^àÇàÇàÇàÇà^àÇàÇà^àà≠¨◊≠≥≠◊≠≥¨¨ÅÅzÅÄÅIJÅÄÅÅÄ1˛V1˛V1˛V1˛V1VV1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+V1V1V1V+VVÇ^^]Ç]Ç^à]^^ÇW^^Ç]à^Ç]ÇÇâààÇà]^]Ç]^]à]Ç^Ç]Ç^à]^]ÇÇ≠àà]^^àÇ≠¨à]Ç^à^Ç^à^à]Ç]Ç]ÇW^]Ç]ÇÇ≠àà^à]^]à]Ç]^W^]Ç]Ç]Ç]àà≥ààÇà]Ç]^]^]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç^à]Ç]Ç]Ç]ÇÇ≠àÇ]ÇÇà^Ç]Ç]^]à]^]à^Ç]Ç^Ç]Ç]àÇà]Ç]àà≠¨≥¨≥¨≥¨≠¨¨ÄÄVÅVÅÄÅVÅÄÅVV1V1V1V+V1V1V1V+V1VV1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1VV]]à^Ç^à^à^Ç^à^Ç^Ç^Ç^Ç^Ç^àà≠àà^Ç^à^Ç^Ç^à^à^Ç^à^à^Ç^≠¨â^à^Ç^≠≠≥Çà^à^à^à^à^eà^à^Ç]Ç^^]ÇÇàà≠ÇÇ]Ç]Ç^àÇÇ]Ç^Ç]Ç^Ç]àÇ≠¨≥àà^à^Ç]Ç^Ç]Ç^Ç]à^Ç]Ç^Ç^àÇà^àÇà^à^Ç]à¨≠^Ç^àÇàÇà^à^àÇà]Ç^àÇà^àÇàDzàÇà˛Ç≠¨≥¨≥¨≥¨◊≠≥¨¨ÄÅVÅÄÅIJÅÄÅVV1V1V1V1V1V1V1V1V1+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+U+VW^^Ç]Ç^à]^]Ç]^]Ç]^]^]^]Ç^àà≠ÇÇ]à]^]Ç]Ç]Ç]^]Ç]Ç]Ç]^Ç≠ÇÇ]^WÇÇ≥àÇ]Ç]Ç^Ç]Ç]àn^Ç]^W^]ÇW^]ÇǨàÇ]^]Ç]Ç]à]Ç]Ç]^WÇ]^]ÇÇ≠¨≠]^]ÇW^]^]^]^W^]Ç]Ç]Ç]Ç^à]Ç^à]Ç]ÇW^^≠ÇÇ]Ç]Ç^à]Ç]Ç]à^Ç]Ç^à]Ç^àÇàÇà]à^Ç]ÇÇ˝¨&≠¨≠¨≥¨¨ÅÅVÄVÅVÅVÅVÅVV+V1V+V1V+V1V+V1V+VV1V1˛V1V1V1˛V1V1V1˛V1V1V1˛V1V1V1˛V1V1V1˛V1V1V1V1VVÅ^Ç^à^à^Ç^Ç^à^Ç^à˛^<Ç^Ç^âà≥à≠ÇÇ^à^Ç^à^à^àÇà^Ç^Ç^Ç^≠¨≠ÇÇ]Ç^≠¨≥Çà^àÇà^àÇàà≠àà]Ç^Ç^à˛^â¨≠˛ÇQà^àÇÇ]à^Ç^à^Ç^à^Ç^àà≥àà^à]Ç^Ç]Ç^Ç^Ç^Ç^àÇà^àÇàÇà^àÇàÇà^Ç^àà≠Çà^à^à^àÇà^ÇÇà^àÇàÇà^Ç^˛à^àÇÇ]àà≠¨≥¨≠¨◊≠◊≠◊¨≠ÅÅzÅÄÅÄÅIJÅVV1V1˛V1V1V1˛V1V11V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V]Ç]Ç]^]Ç]^]^]Ç]Ç^^]Ç]^]Çà≠à≠ÇÇ]^]^]^]Ç]Ç^à]^]^]^]ÇÇ≠àà]^]ÇÇ≠àà]^^à^à^à]ààà^Ç]^]Ç]ÇWÇÇ≠àà]Ç]Ç^ÇW^]Ç]Ç]Ç]Ç]Ç]^]àà≠Çà]Ç]Ç]^]Ç]Ç]Ç]Ç]Ç]^]Ç]Ç]Ç]àÇà]Ç]^]¨àà]^]Ç]^]Ç]^]Ç]Ç^à^à]ÇWÇÇà]Ç^ÇW^]àਨ≠ਨ≥¨≥¨≥¨¨ÅÅVÄVÅVÅzÅVV1V+V1V+V1V+V1V+V1ViV1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1VVÇ]à^Ç]Ç^Ç]Ç^Ç^à^Ç^à^Ç]Ç^àà≥àà]Ç^Ç]Ç^Ç]Ç^à^Ç^Ç]Ç^^]˛≠^à^àÇ≠≠≥^Ç]ÇÇàÇà]àDzà"^^]Ç^Ç]Ç^àà≥Ç^]Ç^à^Ç]Ç^à^Ç]ÇÇà^Ç]^Dz≠IÇà^à^à]Ç]Ç]à^Ç^Ç]Ç]Ç]à^Ç^àÇàÇàÇà]àà≠ÇÇ]Ç^à^Ç]à^à^à^à^àÇÇ]ÇÇà^àÇà^Ç]ÇÇ≠¨≠¨≠˛¨#◊≠≥¨≥¨¨ÅÅVÅVÅÄÅÄÅVV1V1V1V1V1V1V1V1V1P+U+V+V1V+U+V+V1V+U+V+V1V+U+V+V1V+U+V+V1V+U+V+V1V+U+V+U+\]^]^]^]^]Ç]Ç]Ç]^]Ç^Ç]^]ÇDzà^^]^]^]^]^]Ç]^]Ç]^]^]^à≥ÇÇ]Ç]àÇ≠àÇ]^W^^à]^]àÇà^ÇW^]^]^]Ç]¨ààW^]^]Ç]^W^]ÇW^]à]Ç]^WÇà≥àà]^]Ç]^]Ç]^]Ç]Ç]^]Ç]Ç^à]Ç^à^àà¨ÇÇ^¨ÇÇ]Ç]Ç^ÇEW^]Ç]Ç]^]Ç^à]^WÇ]Ç^à^Ç]^]ÇǨà¨à¨Å¨à≥¨≠¨≠àÅVÄVÄVÅVÅVV+1+V+V1V+U+V+V1V+UGVUV1V1V1VUV1V1V1VUV1V1V1VUV1V1V1VUV1V1V1VUV1V1V1VUV1V1VVÇ^^]Ç^Ç^àÇà^à^Ç]˛à^Dz^âà≠àà^Ç^àÇà^Ç^à^à^à^à^Ç^à^˛≠[ÇÇ]àà≠≠≥ÇÇ^Ç^à^à^àÇ≠àà^Ç]Ç]Ç^Ç^àà≥Çà^Ç]Ç^à^Ç^Ç]Ç^Ç^à^Ç^Ç^≠≠◊àÇ]àÇà]àÇà]àÇÇ^à^ÇÇàÇàÇâàà^àà≥¨≠˛àM≠Çà^àÇà^à^à^à^Ç]àÇàÇàÇÇ^àÇàà≠àà^ÇÇàà≥¨≠¨¨Å¨¨◊≠≥≠◊àÅVÅÄÅÄÅÄÅVV1V1V1V1VUV1V1V1VU1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V]Ç]^]Ç]^^Ç]^]Ç]^]Ç]^]ÇW^Ç≠àà^Ç]^^à]Ç]Ç]Ç^à]Ç]à]à]ÇÇ≠ààW^^àÇ≠àà]Ç]Ç]Ç]Ç]à6àà^Ç]^W^]^]Ç^≠àà]Ç]^WÇ]Ç]^]Ç]Ç]Ç]Ç]Ç]àÇ≠¨≠^Ç^à]^]à]Ç^à]˛à9^Ç^à]Ç^à]Ç]à¨≠ààÇ≠àà]Ç]Ç]à^à^Ç]à]Ç^à]Ç^Ç]Ç^Ç]ÇÇà^Ç]ÇǨ¨≠¨¨˛Å"¨¨≥¨≥¨¨ÅÅVÄVÄVÅVV1V+V1V+V1V+V1V+V1ViV1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1VVÇ^à^Ç]Ç^Ç^à^^]à^Ç]Ç^à^Ç^àà≥àà]Ç^Ç^à^Ç]à^à^à^Ç^àÇÇ^˛≠^Ç]à^˛≠^^Ç^Ç]à^Ç]àà≠àà^Ç]Ç]Ç]Ç^àà≥Ç^]Ç]Ç]à^Ç]à^à^à^Ç]Ç^àÇàà≥¨≠Çà^à^Ç]à^à^àà≠ààÇÇ]à^Ç]à^ÇÇ≥¨¨Çàà≠Çà^à^àDzàBÇà^àÇà^à^à^ÇÇà^Ç^à^àÇàÇ≠à≠¨≥¨¨zÅà≥≠◊≠≥¨¨ÅÄVÅzÅVÅVV1V1V1V1V1V1V1V1V1+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+1+VW^]Ç]^]Ç]^]ÇW^^Ç]^]Ç]Ç]ÇÇ≠àà]^]^]^]^W^]Ç]^]^]Ç]Ç]àà≠Ç^]^]ÇÇ≠àÇW^]^]^]^]àÇà^Ç]Ç]^]^]ÇÇ≠¨ÇW]]Ç]^]à]^]^]Ç]Ç]^]Ç]à]àà≠àà]^]^]^]Ç]^]àà¨Çà]^]Ç]^]Ç]à¨≠àà^àÇà^Ç]Ç]à]à^à]Ç^à]^]Ç]Ç]Ç]^]à^à^Ç]àǨਨ≠ÅÄVÅà≥¨≥¨≠¨áVÄVÄVÄVÄ11+V+U+V+U+V+U+V+UV1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1VVÇ^Ç^à^Ç^à^Ç^à^à^à^Ç^à^à^≠¨≠àà^Ç^Ç^Ç]Ç^Ç^Ç^Ç]à^à^àà≠¨à^Ç]àÇ≠¨≥Ç^WÇ^^]Ç^ÇÇ'≠àà^àÇÇ]à^Ç^≠≠≥Ç^]Ç^à^à^à^Ç]Ç^à^Ç^Ç^à^ÇDz≠)Çà^à^à^Ç]à^àÇ≠¨≠Çà^Ç^Ç^à^àà≥¨≥ààÇ≠àà^à^Ç^à˛ÇàÇà^à^àÇà^Ç^à^àÇàÇà^àÇàà≥¨≥¨¨˛Ä!¨¨≥≠◊≠≥àÅÄÄVÅÄÅVV1V1V1V1V1V1V1V1V1+V+U+V+V+V+U+V+V+V+U+V+V+V+U+V+V+V+U+V+V+V+U+V+V+V+U+U+W]^W^]^]Ç]Ç]^^à]Ç]Ç]^]à]ÇÇ≠àà^Ç]^]Ç]Ç]^]^]Ç]Ç^Ç]Ç]ÇÇ≠ÇÇ]^]àÇ≠¨àW^]ÇW^]Ç]ààà^Ç]Ç]^]à]ÇÇ≥¨à]^]^]Ç]Ç]Ç]^]Ç]^]Ç]^]^]ÇÇ≠àà^à]à]Ç]à^à]àà≠Çà^Ç]ÇW^]^]àà≥¨à]àÇà]^]^WÇ^Ç]ÇÇà]Ç]Ç^à^Ç]Ç^Ç]à^Ç]Ç]Ç]à¨≠¨≠ÇÅVÄŨ¨≥¨≥¨¨ÅÅVzVÄVÄUV+U+V+V+V+U+V+V+VV1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V+VV^^Ç^^]Ç^Ç^Ç^à^à^Ç^Ç^ÇÇà^àÇ≠àÇ]Ç^Ç^à^Ç]Ç^^]à^Ç^à^Ç]≠¨à^Ç]ÇÇ≠≠≥ÇÇ]^]Ç^Ç]ÇÇ]ààâÇà^àÇà^àÇâ¨◊Ç^]Ç]Ç]Ç^Ç]à]^]Ç^à]Ç]^WàÇàà≥àà^àÇÇ]àÇàÇàà≠à≠Çà]à^^]à^ÇÇ≥≠≠ààÇàÇà^Ç]àÇà]ÇÇàÇà^Ç^˛à8^àÇà^àÇà^à^à^àà≠¨≥¨¨ÅÅzÅÅ≠≠≥¨≥≠¨ÅÅVÄVÅVV1V1V1V1V1V1V1V1V1P+1+V+U+V+1+V+U+V+1+V+U+V+1+V+U+V+1+V+U+V+1+V+U+V+1+V+1+]]^]^]^]^]^]^]Ç^à]^]Ç^àÇà]˛à,W^]Ç]^]Ç]^]ÇW^]^]^]^]Çà≠ÇÇ]^]ÇÇ≥àÇ]^]^]Ç]^]ÇDzà$^àÇà^àÇàÇ≠¨à]^]^W^]ÇW^]^W^]à]Ç]^W^]à]˛àm^Ç]Ç]^]à^à^àà≠àà]^]Ç]^]à]àà≠Çà^Ç]^]Ç]Ç^à]Ç^à]Ç]Ç]Ç^à]Ç]Ç]Ç]Ç]à^Ç]Ç]àਨ≠ÅÅVÄVÅÅ≠¨≠¨≥àÅVÄVzVÄUV+V+U+V+1+V+U+V+1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1VWà^Ç^à^Ç]Ç^Ç^àÇàÇâÇàÇâàâÇâà≠ÇÇ^Ç^àÇÇ]Ç^à^Ç^à^Ç]^]àÇ≠¨≠Çà^àÇâ≠≥ÇÇ]à^à^à^ÇÇ7≠àâàâà≠à≠à≠à≠à≠Çà]^]Ç^Ç]Ç^Ç]à^Ç^àÇà^àÇàÇâà≠àâÇàÇà^àÇâàâà˛≠ÇÇ^Ç^Ç^àDzà ÇàÇà^Ç]Ç^à^à^àÇàÇà^Ç^àÇàÇàÇà^à^Ç^˛à.^à^àÇ≥¨≥¨¨ÅÅVÄÄÅà◊≥≥¨≥¨¨VÄzÅVÄVV1V1V1V1V1V1V1V1+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+U+V+]^Ç]^^à]^]^]Ç^à^àÇà^àÇàÇàà≠àà]^]^^à]^]Ç]Ç]Ç]Ç]^3^]Çà≠àà^ÇÇàÇ≠àà]^]Ç]Ç]à^àÇâÇààâÇàà≠ààÇàÇà]^W^]^]^]^]Ç^à]Ç^à^ÇÇàÇàÇâààÇàÇàÇÇ^àÇàÇàÇ≠ÇÇ]Ç]Ç]Ç]Ç]Ç]Ç]Ç]Ç]^]Ç]Ç]Ç^à]Ç]Ç]Ç]à]ÇÇà]à^Ç]^^à]Ç]Ç]àà≠¨≠àÅVzVÄVŨ≥¨≠¨≥ÅÅVÄVÄVV+U+V+U+V+U+V+U+VMV1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V+V]à^Ç^à^àÇà^àÇàÇâàâà≠ààÇ˝à≠ÇÇ]à^Ç^Ç]^]Ç]^^àÇÇW^^Ç]≠¨≥àà^à^à¨≠^Ç]^]àÇàà≠à≠à≠àâààÇàÇàÇà^àÇÇ]Ç]^]Ç^Ç]ÇÇàÇâààÇààâà≠à≠à≥ààÇâàâà≠ààÇàÇàà≠ÇÇ]àÇà^à^Ç]à^Ç]àÇà]Ç^Ç]Ç^Ç]Ç^Ç^àÇÇ]àÇàDzà4^Ç^àÇà^Ç]ÇÇ≠¨≥¨¨ÅÅVÄVÅŨ¨◊≠≥¨≥ÅÅVÄVÄUV1V1V1V1V1V1V1V1P+U+V+1+U+U+V+1+U+U+V+1+U+U+V+1+U+U+V+1+U+U+V+1+U+U+V+11]^Ç]Ç]Ç^à^àÇàÇàÇàÇàÇà]^]à^˛à(W^]^W^]^W^]^W^^ÇW^]à]ÇÇ≠àà^àÇàÇ≠àà]Ç]ÇÇàDzà#ÇàÇà^à]Ç]Ç]Ç]Ç^Ç]^]Ç]^]Ç^Ç^à^àÇâÇàÇâ˛à≠à≠àà^à^à^àÇà^Ç]^]˛à]]^]Ç]Ç^ÇW^]Ç]Ç]à]^]Ç]Ç]ÇW]WÇ]Ç]Ç]Ç]à]Ç^à]Ç]Ç]Ç]ÇW^]àǨ¨≥ààVzUzVÅŨ¨≥¨≥¨¨ÄVVÄVV+U+1+U+U+V+1+U+UV1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V]âàà^àÇâà≠à≠à≠ààÇàÇà^à]ÇÇàà≠ÇÇ^Ç]^^Ç]Ç^à^Ç^à]Ç^àà≠à≠à≥¨≠à≠à≠à≥àâà≠à≠à≠àâÇOàÇà]Ç^à]Ç^à^à^àÇà^Ç^àÇàà≠ààÇâà≠à≠à≠à≥≠≠à≥≠≠ààÇàÇà^Ç^àÇÇ]àà≠ÇÇ^Ç]àÇà^Ç]Ç^àÇà^Ç^ÇDzà
  2644. ]Ç]Ç^à^Ç]àDzà8^Ç]àÇà^àÇà]Ç^àà≠¨≥¨≥¨ÅVÄVÄVÅÅ≥≠◊≠≥¨¨zÄVÄVV+V1V1V1V1V1V1V1P+V+1+V+U+V+1+V+U+V+1+V+U+V+1+V+U+V+1+V+U+V+1+V+U+V+1+V1]ÇâÇàÇàÇàÇà^àÇà]^]Ç]Ç]^]Ç^˛à]^W^]^]Ç]Ç]Ç]Ç]^]àà≠à≠à≠à≠à≠à≠à≠à≠ÇàÇàÇàÇà^Ç]Ç]^]Ç]^]Ç]Ç]Ç^àÇà^àÇàÇàà≠àâà≠à≠à≠à≠à≠ÇàÇàÇà]Ç]Ç]Ç]^]Ç]^]¨àÇ]Ç]^]Ç]Ç]^]Ç]Ç]^W^]àÇà]^%]^WÇ^ÇW^]à^àÇÇW^]à^Ç^à]^]à^àà≠¨≠¨¨ÄzVz˛VÅÅ≠≠≥¨≠àÅVzVV+1+V+U+V+1+V+U+VV+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V1V]âà≠àâààÇà^Ç^Ç^à]^^à^Ç]Ç^àÇ≠Ç^WÇ^à]à^à]Ç^Ç]Ç^àà≥≠≠à≥à≠à≥≠≠à≠à≠àâÇà]à^Ç^à^Ç]à^Ç]Ç]Ç]à^Ç]àà≠à≠àâà≠à≠à≥¨≠à≠¨≥à≠ààÇà^Ç]à]Ç]Ç^à]à]Ç]Ç]Çà≠^Ç]à^ÇWÇ^à]Ç^Ç]Ç]^]àÇà^à^Ç]ÇÇà^Ç]Ç^àÇà^Ç^àÇàÇàÇà^Ç^àਨ≥¨≠àÅVzVÄVÄVŨ≥≠◊¨≠ÅÅVzVV1V+V1V+V1V+V1V+P+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+UVÅ^à^Ç]Ç^Ç]^W^]Ç^ÇW^]à]^]^]˛à]^]^]^]Ç]^]^]^]^^≠¨≥¨≠¨≠à≠à≠Çà^Ç]Ç^à]^]^]^^ÇW]]^]^]^]^]^]^]àà¨à≠à≠à≠à≠à≠ÇàÇàÇà^à]à]Ç]^]^W^]Ç]Ç]Ç]^]^]ààÇW^]ÇW]WÇ]^WÇ]^]Ç]^]Ç]Ç]^$]Ç]à]^]^]Ç^à]Ç]Ç]Ç^Ç]Ç]Ç]ÇÇàǨ¨≠à¨ÅzU˛VUVVÅà≠¨≥¨¨ÅÄVV+1+1+U+1+U+1+U+1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V1V+VU]]àÇà]^]Ç^à^^]àÇà^à^Ç^à^Ç^àà≠Çà^Ç]Ç^Ç]à^^]à^Ç^â≠◊≠◊≠≥à≠ààÇâ^^]Ç^à^à^Ç]Ç^à^Ç]^]Ç]^]à^Ç]à^àà≥≠≥¨≥¨≠à≠à≠ÇàÇà^à^Ç^àÇà^à^^]Ç]Ç^àÇàÇà^Ç]àà≠^Ç]Ç]Ç]^]à^Ç]à^àÇà^Ç]à^Ç]àÇàÇà^Ç]ÇÇàÇàÇàÇàÇà^àÇà^Ç^àÇà¨≥¨≥¨ÅVÄVÄVÄVÄĨ¨◊¨◊¨¨ÄÅVV+V1V1V1V1V1V1V1+U+U+U+1+U+U+U+1+U+U+U+1+U+U+U+1+U+U+U+1+U+U+U+1+U+1+V2]]à]^W^]Ç^Ç]^]à]Ç^^]à^^]Ç^àÇà]^]^]Ç]^]ÇW^]Ç]àÇ≠¨≥¨à^Ç^Ç]Ç^ÇW^]^]Ç]Ç]^]^]Çy]Ç]^]^W^]Ç]^]à]àà≠à≠ààÇà^Ç]Ç]^W^]^]Ç]à]^]^W^]^W^]Ç]à]Ç]^]àÇÇW^W^]Ç]^]à]Ç]Ç]Ç^à]^]ÇWÇ^à^Ç]Ç]^]Ç]à^à]Ç]à]Ç^à^à]^]Ç^¨¨≠¨≠ÅzUz˛VzVzĨ¨≥¨≥¨¨VV+1+U+1+U+U+U+1+UV+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1U1]W^^à^Ç]Ç^Ç^Ç^à^à^à]Ç^Ç]Ç^àÇ≠ÇÇ]Ç]^]à^Ç]Ç]Ç]àÇàà◊≠≠^Ç]Ç]^]Ç]Ç]Ç]Ç^Ç]Ç^Ç]Ç]-Ç]à]Ç]Ç]Ç]à^Ç^àà¨à≠àà]à^Ç]Ç]Ç]Ç]Ç]Ç^Ç]Ç]^]Ç]^]˛Ç"]àÇàÇàÇàà≠ÇÇ]^]Ç^à^Ç^à^à]Ç]Ç^à^Ç]Ç^˛àB^Ç]Ç^Ç]à^à^à^Ç]Ç^àÇàÇÇ]Ç^àà≥¨≥¨¨VzVÄVzVÄVÄŨ¨≥¨◊¨ÅVV1V+V1V+V1V+V1V++1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+VV]W^]Ç]^W^]^]Ç]^]Ç]^]^]^]^]àÇà]]W^W^]^W^]Ç]^]Ç^¨¨≥à^]^]^W^]^W^]^]Ç]^]^W^]^W^]^W^]Ç]^]^]ÇÇàǨàà]^]Ç]^]Ç]^]Ç]^]^W^W^]^]^WÇÇàÇàÇàǨà¨à¨àà]]W^]^]Ç]^]Ç]Ç]^W^]à]^]Ç]à^Ç]^]à]^]^W^]à]^]Ç]à^à]Ç]ÇǨ¨≠¨≠ÅzUVVzUVVzVÄÄ¨à˛¨ÅÄ1U+1+U+1+U+1+U+1V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+VV]]Ç^Ç^à^Ç^Ç^à^à^Ç^à^Ç]à^^]àà≠ÇÇ]^]Ç^Ç]Ç^à^à^à^à¨≥≠≠^^]à^^]Ç]^]à^Ç]Ç^à]Ç]Ç]+^]^]Ç]Ç]à^^]àÇàà≠¨≠àà]Ç]Ç^à]à^Ç^à^Ç]Ç]Ç]à^Ç^˛àj^àÇàÇ≠¨≥¨◊≠≠àà]Ç]Ç]Ç]à^Ç^à^Ç]Ç^à^à^Ç]à^Ç^à^Ç^à^Ç]Ç^Ç^à^ÇÇàÇà^àÇà^àà≠¨≥¨¨VÄVÄVÄVÄVÄVÅŨ¨◊¨≥ÅV+V1V+V1V+V1V+V1u+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+V2]]Ç]Ç]^]Ç]^]^]Ç]^]à]^]Ç]^ÇàÇÇW^]^]^]^]^]Ç]Ç]ÇÇ≠¨≥àÇW^]^]^]^]^]Dz]1Ç]^W^]^W^W^]^W^]^W^]Ç]àà¨Çà^^W^]Ç]^]^]Ç]à]^]^]Ç]Ç]˛àk]]WÇ]^Ǩ¨≠¨≠Çà]Ç]^]^]^]Ç]Ç]Ç]^]Ç]^]à]Ç]^WÇ]Ç]Ç]^W^]Ç]Ç^Ç]Ç^à]Ç^à]^]¨à¨¨≠ÅÅVVUVVzUVVÄVÄŨ¨≥¨¨VU+U+1+U+1+U+1+UU+V+U+V1U+V+U+V1U+V+U+V1U+V+U+V1U+V+U+V1U+V+U+V1U+V+U1]]Ç^à^Ç]Ç^Ç]à^Ç^à^Ç]Ç]Ç]Ç^àà≠Ç^]Ç^Ç]Ç]^]Ç^^]àÇàà≥≠≠]^]^]Ç]^]Ç]^]Ç]Ç]à^Ç]Ç]^]Ç]^WÇ]Ç]^]Ç]àà¨à≠àà]Ç]Ç]Ç]Ç]Ç]Ç]à^^WÇ]Ç]Çà≠ÇÇ]^]Ç]ÇÇ≠ààÇà^Ç]à^Ç]Ç]Ç]Ç^Ç]Ç]Ç]Ç^à^à^Ç]Ç^à^à^à]Ç^àÇàÇà^àÇà^Ç^à^à^Çà≥¨≥¨¨ÅÄUzVzVÄVzVÄVÅÅ≠≥≥ÅÅUU+V1U+V+U+V1U+S+1+1+1+U+1+1+1+U+1+1+1+U+1+1+1+U+1+1+1+U+1+1+1+U+1+1+VW^]^]^W^]^]^]Ç]^]^]^W^W^]Ç^àÇà˛]Ç]^W^W^]^W^]àǨ¨≥Ç^]^]^]^]^]^W]]Ç]^]Ç]^]^W^]^W]]^]^W^]^]àÇàÇà]^]^]^]Ç]^W^]Ç]ÇW]W^W]]àÇÇW^W]W^WÇ^ÇW]W^]Ç]ÇW^]^]^]^W^]Ç]Ç]Ç]Ç]ÇW^]BÇ]^]à]Ç]à]à]Ç]Ç]à]Ç]^]Ç]Ç]à¨≠¨¨ÅÅVVUVUVUVUVVzVÄŨÅÅVV+1+U+1+1+1+U+1V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+V1V+UV]]à^Ç]Ç^Ç^à^^]à^^]Ç^^]Ç^Ç^âà≠Çà^Ç]à^^WÇ^Ç]Ç^à^à¨≥≠≠^Ç]à]^]à^Ç]Ç]Ç]à^à]Ç]Ç]àÇà]Ç^Ç]à]^]à]ÇÇ≠à≠àà]Ç]à^Ç^à]^]˛à,]à^Ç]Ç]ÇÇà^^]à^^]Ç^Ç]Ç]^]Ç^Ç]Ç]Ç]à^Ç]Ç^Ç]àÇÇ]˛à ^Ç^à^Ç^ÇÇàÇà^˛à6^Ç^àÇàÇÇ]àÇàÇàà≥¨≥¨¨ÅÅVzVÄVzVÄVÄVÄVÄV\VV1V1V+V1V+V1V+V1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+VW^]^]^]Ç]^]Ç]^]Ç]^]^W^]^]^ÇâÇÇ]^]^]ÇW]WÇ]^]^]ÇÇ≠¨≥àà]^]ÇW^]^]^]^]^]Ç]^]^]Ç]Ç]^]ÇW]]^W^]Ç]àà≠à¨]^W^]^]^]^W^]à]^]Ç]^]Ç]àÇÇW^]Ç]^]^W^]Ç]^]^W^]ÇW^]Ç]Ç]^]Ç]à]^]à]Ç]Ç]^]^]à^à]Ç]à]^]Ç^àÇà]Ç]à^àà¨à≠¨≠ÇÅVVUVUzUVUzU˛V+1+1+1+U+1+U+1+U+1+UU+V1U+V+U+V1U+V+U+V1U+V+U+V1U+V+U+V1U+V+U+V1U+V+U+V+U2]^Ç^Ç^Ç^Ç]^]à^Ç]à^Ç]Ç^^]Ç^ààâ^^]Ç^à]ÇW^]Ç]Ç]Ç^à¨≥≠≠^Ç]Ç]à]^]^]^]^]^]Ç]^]Ç])Ç]Ç^à]^]Ç]Ç]àà≠¨≠¨≠àà]^]^]^]^]Ç]Ç]Ç]Ç]à^àDzà8]Ç]Ç]à]^]Ç]ÇÇà^Ç]^]Ç]Ç]^]à^Ç]Ç^à^à^à^à^Ç]Ç]ÇWÇÇàÇàÇÇ]Ç]Ç^˛à^à^àÇ˝à'≠¨≥¨¨ÅÅUzVzUzVzVÄVzVV1U+V1U+V+U+V1U+V+U++1+U+1+1+1+U+1+1+1+U+1+1+1+U+1+1+1+U+1+1+1+U+1+1+1+1*VWÇ]^]^]^]^W^]Ç]^]Ç]Ç]^]^]^ÇàÇÇW^]Ç]^]^W^]Ç]^WÇÇ≠¨≥Ç^]^]^]^W]]^W]W]W^]^W]]^]^]Ç]^W^]à^àÇ≠¨≥¨≠à≠ÇàÇàÇà^Ç]^]Dz]v^]^]Ç]àÇà]^]^W^]ÇW^ÇàǨàà]^W^]^]^W^]Ç]^]Ç]Ç]Ç]Ç]Ç]^]ÇW]]à]à]Ç]^]Ç]Ç^à]Ç]Ç]Ç]à^àà≠¨≠ààVVUVUVUVUVUVUVUV+1+U+1+1+1+U+1+1+1V1U+V1U+V1U+V1U+V1U+V1U+V1U+V1U+V1U+V1U+V1U+V1U+V1U+UVà^à^Ç]Ç^Ç^à^Ç^à^Ç]àÇà^à^^]ààâÇà^à]Ç^Ç]Ç^à^à]^^≠¨≥≠≠]^]à]^]Ç]Ç^à]^W^]Ç]Ç]Ç]Ç^à]Ç]Ç^àà≠¨≥≠≥≠≥≠≠à≥≠≥≠◊≠≠à≠Çà^à]^]Ç]^]àÇà^à^Ç]Ç]Ç]àà≥≠≥≠≠Çà^Ç]Ç]à^Ç]à]Ç]Ç]à^Ç]àÇà^àÇà^Ç]Ç^à^Ç]Ç^Ç^àÇàÇà^Ç^àÇÇ^àà≠¨◊¨≠ÅÅUVVÄVzUzVzUÄVVUV+U+V1U+V1U+V1U+V1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+V]Ç]Ç]^]^]^]^]^]^W^]Ç]Ç]Ç]^ÇâÇÇ]Ç]^]^W^]^]^]Ç]ÇÇ≠¨≥Ç^W^]^W^]^]^]^W]]^W]]^W^]Ç]^W^]àà≠à≥¨≠ààÇà]Ç^àÇàà≠à≠¨≠ààÇ^W]W^W]]Ç^Ç]Ç]Ç]^W^]¨¨≥¨≥àà^Ç]^W^]Ç]Ç]^W^W^]Ç]^]Ç]Ç]à]Ç]^]Ç]Ç]^]Ç]Ç]Ç]Ç]Ç]Ç^Ç]ÇÇàਨ≠¨¨VVOVUVUVUVUVUVUV+1+1+U+1+U+1+U+1+UU+U+U+V+U+U+U+V+U+U+U+V+U+U+U+V+U+U+U+V+U+U+U+V+U+U+U2Ç^^]à^Ç]Ç^^]Ç^Ç]^]^]Ç^à]Ç^ààâ^^]à^Ç]^]^]Ç^à]Ç^àà◊≠à]^]^]Ç]^]Ç]^]Ç]^]^W^]^]&Ç]Ç]^]≠≠≥¨≥¨≠ÇàÇà]^]^W^]ÇÇ≠¨≥≠◊≠≠ÇÇ]^WDz]oà^Ç]à^Ç]Ç]àà◊≥≥¨≠àà]à^Ç]à^Ç]Ç]^]Ç]Ç]Ç]Ç]à^Ç]Ç^Ç]à^à]Ç]Ç]Ç^à^à^Ç]à^à]Ç^àÇ≠¨≠¨≥¨ÅUVUzUzVVUzUzUzUU+U+U+V+U+U+U+V+U++1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1*VW^]^]^]^]àW]]^]^]^]^]Ç]^]Ç^àÇÇ3^]^W^]^W^]Ç]^]àÇ≠¨≥Ç^]^W]]^W^]]W^]^]^W]W]W]#W]]^]àà≥¨≠ÇÇW]]^]]W^3]W]3]]àǨ¨≥¨¨Çà˛]K^3]]Ç]^]^]^]Ç]¨¨≥¨¨àà]^]Ç]Ç]Ç]^]^3]]^W^]Ç]Ç]Ç]^]Ç]Ç]à]Ç]^W^]Ç]Ç]Ç]Ç]Ç]^]^]àศVUOVUVUVUVUVUVUV˛+1+1+1+1+1+1+1+1V1U+V+U+V1U+V+U+V1U+V+U+V1U+V+U+V1U+V+U+V1U+V+U+V1U+U2^^à^Ç^à^à^Ç^Ç^Ç^Ç^à^Ç]Ç^Ç^âàâ^^]Ç]Ç^Ç]Ç]Ç^à^àÇ≠¨≥≠≠^^]Ç]Ç]Ç^ÇW^]Ç]Ç]^]à]^WW^]Ç^≠≠≥≠≥àà]^]^]Ç]^]Ç]Ç]^W^]àÇ≠¨◊≥≥àà^à]Ç]Ç^à^Ç]à^Ç^≠≠◊≥◊à¨àà]^]à^Ç]à^ÇW^^Ç]Ç^Ç]àÇà^à^Ç]˛à>Çà^Ç]à^àÇàÇàÇàÇà^à^Ç]àਨ≥¨≥¨ÅUVUzVVUÄVVUzVzUV+U+V+U+V1U+V+U+V1+U+1+1+1+U+1+1+1+U+1+1+1+U+1+1+1+U+1+1+1+U+1+1+1+U+1+VW^]Ç]Ç^Ç]^]Ç]^]^]^]Ç]^]^]ÇÇ≠ÇÇ]^W^]Ç]^]^]Ç]Ç]ÇÇ≠¨≥Ç^W^]^]^W^]]3^W^]^W^]àWW3^]àà≠¨≠^^W^]^W]W^W^]Ç]ÇW]W^]^]àà≥¨≠àà]^]^W^]^WÇ]^]Çà≥¨≥¨à]àÇ^W]]^]Ç]Ç]]WÇ]^]à]^]ÇWÇ]ÇW^^à]Ç]Ç]Ç]Ç]à^Ç]àÇà]Ç^à]Ç]àǨ¨≠¨¨ÅVOVUVUVUVUVUVUV+1+1+1+1+U+1+1+1+UU+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U2Ç^Ç]à^à^Ç]^^à^^]à^^]Ç]^]Ç^ààâ^^W^]Ç]Ç]Ç]Ç]Ç]Ç^àà≥≠≠]Ç]^]Ç]^WÇ]^W^]^W^]à]ÇW9]]≠¨≥≠≥àÇ3^]Ç]Ç]^W^]Ç]à]ÇW^]Ç]Ç]àà◊≠≥àà]Ç]^]^]Ç^à]àà≥≠≥¨¨^˛à\]^]Ç]à]Ç]Ç]Ç^à]Ç^à]Ç]Ç^à]Ç^à^à]Ç]à^à^àÇà]Ç^àÇàÇàÇà^^]à¨≥¨≥¨ÅVzUVUzUVUzUVUzUV+U+U+U+U+U+U+U+U+_+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+V]Ç]^]^]^]^W^]^W^]^W]]^W^]ÇÇàÇÇW]W^]^]^]^]^˛]'ÇÇ≠¨≥Ç^]^W]W]3]W^]]W]W]W^]^W]Wàà≥¨≠àÇW]3˛]W^W]W]W]]^]]W^]^]]Wàà≥¨≠ÇDz]G^W^]à]ÇÇ≠à≠àà]^]àÇÇ]^]à]Ç]^]Ç]Ç]^]Ç]Ç]Ç]Ç]^]Ç]Ç]^]^]^]à]Ç]Ç]^]ÇÇà^à]^W^]˝¨"≠ÅVUVOUUVUVUVOVUV+1+1+1+1+1+1+1+1+1|U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+VVà^Ç^Ç]Ç^Ç]Ç^^]Ç^à]^]^]Ç]ÇÇ≠àà^à^Ç]Ç^Ç]Ç]^]à]^]≠≠≥≠≠]^W^W^]^]^]à]^]Ç]^]à˛]ià¨≥≠≠Çà]Ç]Ç]à]^]àÇàÇà]Ç]à]Ç]Ç^à]^^àà◊≠≥Çà]Ç]Ç^ÇÇâà≠à≠ÇàÇà]Çà≠ÇÇ]àÇà]à^Ç]Ç^à]à^Ç^àÇÇ]à^ÇÇà^Ç]àÇÇ]à^Ç]ÇÇà]Ç^¸à*]Ç]Çà◊¨≥¨¨VVUzUVUzUVUzUzUV+U+U+U+U+U+U+U+U+z+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+]]^]^]^]^]^]^W^]Ç]^]^]^W^]àà≠^Ç]Ç]^]^]^]^W^]^WÇÇ≠¨≥Ç^3]W]3]]^W^]^W^]^W˛]Çà≥à≠Ç^W]]ÇŨÇÇ3]]àà¨Ç^]^]Dz]^˛]X^]àà≥¨¨]Ç]]W^]ÇÇàÇÇ]Ç]Ç]^]ààÇW^]à]Ç]ÇW]W^]^]Ç]Ç^à]^]Ç]à]Ç]^]à]Ç]^W]WÇ]^W^]à^à]Ç]^]¨¨≠¨¨ÅIJUVUVUVUVUVUV+U+1+1+1+1+1+1+1+1OU+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+VVÇ^^WÇ]^]Ç^^]Ç^^]à^^]à]^]ÇDzàÇà]Ç]^]^]^]^]^]Ç^¨¨◊≠àW^]^]^]^]Ç]Ç]^]^]^]^W^Ç≥≠≥àÇ]^]^Ç≠¨≠Ç^]àà≥¨¨]Ç]^]à]^W^]^]Ç]¨¨◊≠¨ÇÇ]^]Ç]Ç]Ç]Ç]à]^]àà¨]^]Ç^à]Ç]Ç]^]Ç]Ç]Ç^à^àF^à]à^Ç]Ç^Ç]à^ÇW^W^]Ç]^]àÇà]àÇà]Çà≠¨≥¨¨ÄzUVUzUVUVUVUzUV+U+U+U+U+U+U+U+U+˛+1+1+1˛+1+1+1˛+1+1+1˛+1+1+1˛+1+1+1˛+1+1+1˛+1+W]^3]W^]^]^]^]^W^]^]^]^W^]àÇàÇÇW^]^W]W]W]W^W]]àÇ≠¨≥Ç]3^]]W]3]]^]]W]3]W]3]]¨à≠àÇW]W]WÇà≥¨àW]]à¨≥ÇÇ]]W]]^W]W^]Ç]ÇÇ≠¨≥àà]]W]W^W]3\]]^]^W]]¨Ç^W]WÇ]^]^]^W^]^WÇ]Ç]Ç^à]Ç]ÇW]]Ç]^]ÇW]W^]^]^W]]Ç]Ç]Ç]^]àਨ≠ÅÅUUOUUVOUOVOUUV+1+1+1+1˛+1+1+1++DU+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+VVÇ^à^^]à^à^à^Ç]Dz^à^^]^]Ç^≠àà]^]Ç]^]^]Ç]^]à^àÇ≠¨≥≠≠]]W^]^W^]^]Ç]^]^]^]^^≠¨≥¨à]^]^]Çà≥≠◊Ç^WÇà≥≠≠ÇÇ]Ç]Ç]Ç]Ç]¨¨≠¨≠¨≥≠◊àÇ]à]Ç]à^^WÇ]Ç]à]àà≠^^WÇ]Ç]Ç]Ç]Qà^Ç]Ç^àÇàÇà^ÇÇà]Ç]Ç]à^Ç]Ç^à^àÇà^Ç]Ç]àÇà^à^àà≥¨≥¨¨ÅÄUzUVUzUVUzUVUVUU+U+U+U+U+U+U+U++1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1*11]W^]^W^]Ç]Ç]^]Ç^Ç]^]^W^W^WÇÇà^^3^]^W^]Ç]Ç]Ç]Ç]ÇÇ≠¨≥à^3]W^W]W]W]W^W]W]W]]àà≥¨à]]W^W^Ç≠¨≠ÇÇW]]¨¨≥àà]]W^]^]^W]Ç≥¨≠à≠¨≥≠≠]^]^W]]^W]]^W^]^]¨àÇW]W^]^]Ç]Ç]Ç]Ç]^]à^à]^]à]^]^]Ç]Ç]^]Ç]Ç]Ç]Ç]Ç]Ç]à]Ç]Ç]àà≠¨¨àÅVUUVOUUVUUOVOUOU+1+1+1+1+1+1+1+15U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+VV˛^]Ç]^]Ç^Ç^àÇàÇà^^]Ç]^W^]àÇà]^WÇ]Ç^àÇàÇàÇà^àÇàà≥≠àW^W^]^]^W^]^W^]^W^]àà≥≠≠^^W]]Ç^¨¨≥àÇ]^]àà≥≠≥àà]]WÇ]^]^]à¨◊¨¨à≥≠≥¨à]]W^W]WÇ]Ç]Ç]^`]àà¨]Ç]^Wà^Ç]à]^]à^Ç]Ç^à]Ç]Ç]à]Ç]à^Ç]à^Ç]àÇà]Ç]àÇà^Ç]Ç^Ç]àà≠¨≥¨¨ÅÄUVUVUVUzUVUVUV+U+U+U+U+U+U+U+U+˛+1*++1˛+1*++1˛+1*++1˛+1*++1˛+1*++1˛+1*++1++*11WW^W^]^W^W^]àÇà]^]^W^]^W]WÇÇà^Ç]Ç]Ç]à^Ç]Ç]Ç]ÇÇà]à¨≥Ç]3]3]W]3]W]W]W]W]W^Ç≠¨≠Ç^W]3]WÇÇàÇÇW]W^]à¨≥¨¨]]3]W]W]W^Ç≠≠≥Åàà≥¨≠àd^3]W]W]]^W]W]W]]≠àÇ]^W]]ÇW]]^W^]Ç]^]^]^]^W]]Ç]à]ÇW^]^W^]à]Ç]Ç]à^ÇW^]Ç]Ç]àǨ¨≠ààVUOUOUOUUVOUOU+U+1*++1˛+1*++1++<U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+1+\W^]Ç^^]Dz^˛à]Ç]^]^]Ç]Ç]ÇÇ≠ààDzàDzà^àÇàDzàtÇàà≠àà]]W^W^W^]^]Ç]^WÇ]^]≠≠≥àÇ]]W^]^]àÇÇ]Ç]^]àà≥≠◊¨àW^]^W^]ÇÇ≠≠≥àà^≠≠≥≠≠]^W^]Ç]^]Ç]Ç]^]àà≠ÇÇ]Ç]Ç]^]Ç]Ç^Ç]à^Ç]Ç^à]Ç]Ç^˛à]Ç]Ç]à^àDzà2^à^à^Ç]Ç^à^àÇ≠¨≥¨≥àÄUVUVUVUVUVUVUVUU+U+U+U+U+U+U+U+N+1*++1+1+1*++1+1+1*++1+1+1*++1+1+1*++1+1+1*++1+1+1*12]W^W^W^]^]àÇà]^]^W^]^W^]^]˛à8^ÇÇà^Ç^à]àÇàÇàà≠Çà]Ç]Ç]^W]W]3]W]3]]^W]]^W^à≥¨àW]3]]^W]W^W˛]gW^Ǩà≠¨≠Å]W]W]W^]¨¨≠ÇÇ]ÇÇ≠¨◊àÇW]W]W]3]]Ç]]W]]àÇÇ]^]Ç]^W^]Ç]Ç]^]^]^]Ç]ÇW^WÇ^à]^]^WÇ]ÇW^]à]Ç]ÇW^]Ç]Ç]Ç]ÇÇ≠˝¨VUOVOUOVOUOVOUOU˛+ 1+1+1*++1+1+1O1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+1+\WÇ]^]^]^]âàà^^]Ç]Ç]^W^]Ç]àDzàfÇàÇàÇà^àÇàÇ≠à≠àâÇÇ]^]^]^]^W^]^W^]^]^W^]^Ç≠≠≥Ç]3^]^]^]]W^]^W^^àà≥≠≥¨¨]]WÇ]^]àà≠Çà]^]àà≥≠≥ÇÇ]Ç]]W^]Ç]à]]W˛à\]Ç^à]à]Ç]à]Ç]Ç]Ç]Ç]Ç]à]Ç]Ç^Ç]Ç]^]Ç^à]Ç]Ç]àÇÇ]Ç]Ç]à^à]ÇǨ¨≥¨≥àÅUVUVUVUVUVUVUVOU+1+U+1+U+1+U+1+d*++1*++1*++1*++1*++1*++1*++1*++1*++1*++1*++1*++1*+*12]]^W]W^]ÇÇ≠]^W^W^]^3]WÇ]^]ÇÇàÇà^àÇà]Ç]^W^ÇàÇà^^W˛]83]]^W]W]W]W]3]3]3]Wàà≠àÇ3]W]W]W]3]3]W]WÇ^àà≠¨≠àÇW]W]W]]^W˛]W]]àà≥¨¨]Ç]]W]]^W˛]a3]]àÇÇ]Ç]^]^W^]]3]W]W^]^]Ç]Ç]Ç]ÇW]W]]Ç]ÇW^]Ç]Ç]à]^]^W^]Ç]^]àǨ¨≠¨¨VUOUOU+UOUOUOUOU+1*++1*++1*++1*+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+U+1+]]à^Ç]^]àà≠Çà]^]Ç]^]^]^]à^Ç^≠ààÇàÇà^à^^]^]àà≠ÇÇ]^]Ç]Ç]^]Ç]^]Ç]]W^W]W^]ÇÇ≥¨à]'Ç]Ç]^]^]^W]W^]^]âà≥≠◊≠≥ÇÇ]^]à]ÇW^]^]^]Çà˛≥nàà^Ç]Ç]Ç]^]Ç]^]àà≠ÇÇ]Ç^Ç]Ç]ÇW^]Ç]Ç]Ç]Ç]Ç]à^à]Ç]^]Ç^Ç]Ç^à^à]Ç]àÇÇ]Ç]Ç^à^àÇ≠¨≥¨≥¨ÅUVUVUVUVUVUVUzUU+U+U+U+U+U+U+U++1˛+1*++1˛+1*++1˛+1*++1˛+1*++1˛+1*++1˛+A1*++1*12]]^]^]Çà≠Ç^]^W^]^]^]^W^]^]ÇÇà]^]^W]]^W]WÇÇàÇÇ]^W^]^]^W]W^W˛] 3]WW3]W^]¨¨≠˛]<^]]W]W]W]3]W]WÇÇ≠à≥¨≥¨à]]W]]Ç]]W^]]W]]à¨◊¨≠Ç^W]]^]]W]W]W^]àÇà˛W^]^W^]]W^˛])ÇW]W^]Ç]Ç]^W^]Ç]^W^]Ç]Ç]^W^]à]^W^]Ç]à]àÇ≠à˛¨ VUOUOUOVOUOUO˛U+1+1*++1˛+1*++1]1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+]]à^^]àà≥¨â]^]^]^]Ç^à^à^Ç^àÇà^Ç]Ç]^]^]^W^]˛à^à]^]Ç]^]^]]W^]^]^]]3˛]=Wà¨≥àà]]W^]]W^]^W^W]W^^àà≥≠≥¨≥àÇW^]Ç]^]Ç]^W]WÇÇ≥≠◊¨àW^]Ç]^W]]à˛]_àÇàÇÇ3]]Ç]^W^]^]Ç]^]Ç]Ç]Ç]^]Ç]^]Ç^Ç]Ç]à]Ç]Ç]à]Ç^à^Ç^àÇàÇ≠àâà≠¨≥àÅUVUVUVUVUVUVUVOU+1+U+1+U+1+U+1+p*++1*++1*++1*++1*++1*++1*++1*++1*++1*++1*++1*++1*+*U2^]^W^^≠¨≠Ç^W^W^]^]Ç^à^à^Ç^Ç]^]^]^]]3]W]WÇÇàÇÇ]^W]W]W]W]3W3]W˛]|3]3]3]Ç≠¨à]]3W3]W]W]W]W]]^]à^àà≥¨≠¨¨]]W]W]W^]]WW3]Wàà≥¨≠Ç]W^]^W]W^]^3]]Ç]ÇWW3]W]3]W^]^]ÇW]W^]Ç]^W]]^W]]Ç]^]à]Ç]Ç]àÇÇ]Ç^à]ÇÇàDzà%Çàà≠¨¨VVOUOUOUOU+UOUOU+1*++1*++1*++1*+U+1+U+U+U+1+U+U+U+1+U+U+U+1+U+U+U+1+U+U+U+1+U+U+U+1+]^Ç]Ç^à¨◊≠à]^]^]Ç]^^à^Ç]à^Ç]à]^]Ç]^W^]^W^^àà≠ÇÇ]^]^W^]^]^]^]^]^W^]^W]]¨¨≥à^W ]3]]Ç]Ç]^]Ç]˛à^àà≠¨◊≠≥¨à]^W^]^]Ç]^WÇ]^Ç≥≠≥¨≠]^]Ç]^WÇ]à]^]ÇÇàÇÇW^]^W^]Ç]à^à]ÇW^]à^Ç]àÇà]Ç]Ç]ÇÇàÇàÇàÇâàâàâÇàà≠ààÇâààÇàà≠¨◊¨ÅUzUVUVUVUVUVUVUU+U+U
  2645. +U+1+U+U+U+n+1*++1*++1*++1*++1*++1*++1*++1*++1*++1*++1*++1*++1*1V^]^]ÇÇ≠≠≥ÇÇ]^W^]^W^]^W^]^W^]^3]]^3]W^W]WÇÇàÇà]]W]3]W^W]]^W˛]KW]W]W]3ÇÇ≠àÇ3W3W3]W]W]W]WÇÅàÇÇ^àà≠¨≥¨¨ÇÇW]W^]]W]W]]^WÇà≥¨≠àÇW]W]W]W^]]W]]ÇÇà˛])^]]W]W^]Ç]Ç]]W]]ÇWÇ^à]Ç]à]Ç^àÇàÇàÇàÇàÇàÇàDzàÇÇ]Ç]Ç^àà˛¨ÄVUUOUOUOUOUOUOU+1+1*++1*++1*++1]1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+1+]^à^Ç^≠≠◊≠≥àà]Ç]^]^]^]Ç]^W^]^]^W^W^W]W^]^]˛à^à˛]^]]W^]^]^]Ç]^W]]^˛]˛≠]W3]3˛]W^]^W]W^]àÇàà≥≠≥¨≥¨à˛]9Ç]Ç]]W^]^]^Ç≥≠≥¨¨]^W]W^]^]à]^]Ç]àÇà]^]à]Ç]^]^]Ç]Ç]Ç]^]Ç^àÇ˝à≠àâàâààDzàÇà^Ç^àDzà*^^]Ç]ÇÇ≠¨≥àÅVVUVUVUVOUOVUUOU+1+U+1+U+1+U+1+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*12^]^WÇà≥¨≥¨≠ÇÇ]^W]]^W]W^W]W^W]W]W]3]3WW^W]^à^Ç]^W]W]3WW]3]W]W]WW2]3]3]à≠Ç^3Wl3]W]3]3]W]W]3]]àÇ≠¨≥¨≠¨≠]]3]W]W]3]W]W]]àà≥¨≠Ç]3]W]W]W]]^W]W^]à]]W]]^]]W^W^]Ç]Ç^Ç]ÇÇà^Ç^à^àÇà^Ç]Ç]Ç^à]^W^WÇÇàDzà)W]]^WÇà≠¨¨ÅÄOUOUOUOU+UOU+U+U*+*+*+*+*+*+*+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+]^à]^^à¨◊≠≥≠≥àÇ]^]^]Ç]^W^]^]Ç]^]Ç]^W^W]]^]àÇàÇà]Ç]]W^W^]^W]]^]^W]W]W^^≠¨¨]]W'^]^]^W]W^]Ç]^W^Ç≥≠≥≠◊≠≥àÇ]]W]W]W^]]W^]ÇDz≥n¨¨]]WÇ]^W^]^]à]Ç]ààÇW^]Ç]Ç^à^àÇàÇâàâàâàâààÇàÇà^à^Ç]^]àÇàÇà]^WÇàâà≠à≥ààÇÇ]Ç^à¨◊¨¨zzUVUzUVUVUVUVUV+U+1+U+1+U+1+U+h+1*+*1*++1*+*1*++1*+*1*++1*+*1*++1*+*1*++1*+*1*+*1*1WÇ]^W^]àà≠¨≥¨à]^]^W]]^W^]^W^]^W]]^]]W]W]]Ç]àÇà]^]^WW3˛]3W3]W^W]W^W^]àà≠ÇÇ3W3]W]W]3]W]W˛]TWÇà≥¨≥¨≥àà]]3W3]3WW]W]W]Wà¨≥¨≠Ç]3WW^3]]^W]]^]ÇÇàÇÇ]à^àÇàÇàÇà^Ç^à^Ç^à]Ç]Ç]Ç^Ç]à]^]ÇÇàDzàW]]àÇàÇà¨≠àà]^]^ިÅÅUUOUOUOUOU+UOUOU*+*++1*+*1*++1Z1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U1]^à^^W^]ÇÇ≥≠≥Çà]^]^]^]Ç]^W^]^]^]^]à]^]^˛]˛à ÇÇ]Ç]ÇW]WÇ]^W^]^]à^à^à^àÇ≠àà]]3]3˛]W]W]W]W^]^^à¨≥≠≥¨≠ÇÇ]]3WW^W]W^˛]`ÇÇ≥≠≥àÇW]W]W]W^]Ç]Ç^àÇàà≠ÇàÇâààÇâàà^Ç^Ç^à]Ç]Ç]Ç]àÇàÇàÇà]àÇâà≠¨≥àà]Ç^àÇàÇ≥≠≥ààÇÇ]à¨≥à¨ÅVOVUVOVUUOV˛UV+1+U+1+U+1+U+1+T*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*V2^]^W]W^]àà≥àà]^]^]]3]W^3]W^W]W]W˛]wW]W]3]]àÇà]]3]]^W^]à]Ç^Ç]^^à^Ç^à^àà≠ÇÇ3]3]W]3W3]3W3W3]W^]¨¨≠àà]^]]WW2]W]2W3]W]]àà≥¨à]]W]WW3]W]]àÇàÇà^àÇà]Ç]^WÇ]à]^W^]Ç]Dz] Ç]àÇàǨàà]Ç]à^àÇ≠¨¨ÇÇ]Ç]Ç]àà≠à¨Çà˛]˛¨ÇÅOUOUOUOU+UOU+UOU*+*+*+*+*+*+*+oU+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+11Ç^Ç]Ç]^]ÇÇ≠≠≥ÇÇ]Ç^^W^]^]^W^]^]]W^]^]Ç]^]Ç^àÇ≠àà]Ç^à^àÇàÇâàâÇ˝àâ˝àÇ≠à≠Ç]W]W˛]R3]W]WW3]]^]Çà≥¨≠Ç^]^]]3]]^W]3]]Ç]àà≥≠≥àà]^]^W]WÇ]àÇâààÇà^Ç]Ç^Ç]Ç]à]Ç]Ç^àÇ≠àà]Ç^ààâà˛≠>Çà^Ç]à^àà≥¨à]Ç^Ç]ÇÇàà¨à≠àà^àà≥¨¨ÅzUVUVUVUVUVUVUU+U+1+U+1+U+1+U+N*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*V]à]^]Ç]]Wàà≥àà]^W^W]W^]]3]3˛] 3]]^WÇ^à^àÇâDzà:^Ç^à^à^àÇàÇàÇààâÇàÇàÇà]ÇÇ≠ÇÇ]]3]3]332W3]2W3]WW3ÇÇ≠Ç^3]W]2WW˛]%WW3]]Ç]à¨≥¨à]^W]WW3]]^]^]^W]W^W]]à^àÇà˛]PÇ^àÇàà≠ÇÇ]^]Ç]àà≥¨à]^W]]^]àÇà]^W^]Ç]^]ÇǨà¨àà]à¨≥àÅUUOUOU+UOUOUOUOU++*+*+*+*+*+*+=1*1+1+U+1*1+1+U+1*1+1+U+1*1+1+U+1*1+1+U+1*1+1+U++*U2]^Ç]Ç]Ç]^^˛≠5^Ç]^]Ç]^]Ç]^]Ç^Ç^à^à^ààâà≠à≠à≠à≠àâÇâàâààÇ≠à≠ÇàÇàÇà^Ç]Dz]≠¨à]ÇW]3]W]3]3W3]W]W^W]W˛Ç W]W]3]W^]^]]3˝] àà≥≠≥àà]^]]3]W]]Ç^^W]W]W^]ààâà≥àà˛]OàÇàà≥≠¨]Ç]^]Ç]àà≠ÇÇ]^W]WÇ]Ç]Ç]^]Ç^Ç]à^àà≥¨¨Çàà≠¨≥ÅVOVUUOVUUOVUUOUOU+1+1*1+1+U+1*W*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*++V3^]Ç]^]Ç]àà≥ÇÇ]^W^]^W^]Ç]Ç^àÇààâÇàà≠˛à≠à≠à≠ààÇà^àÇà^àǨàà]^]]3]˛3#]2]Ç≠ÇÇW]2W3]3]3W2W3]3]W]3W3W3]3W2W2˛]{3W233]3]Ç≠à≠àà]]W]3W3]W]]^W]W]3]W^]à^à¨≠Ç^3]W^]àà≠ÇÇ]]W]W]W^]Ç]]W]2WW]W]W^W^]Ç]Ç]à]àà≠ÇÇ]àǨ¨àUUOU+UOUOUOU+UOU*+*+*+*+*+*+*+uU+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+1+U+12^^àÇâÇà^âà≥≠≠Ç^]^]^]ààâà≠à≠à≠≠≥¨≠à≠à≥à≠à≠à≠à≠ààÇà^Ç]àà≠¨≥à^Wà]]3]3˝]Zà¨≠Ç]W^]]W^]]3]W]W]W]W]W]3]W]W]W]]à]]3]W]W]]≠≠◊≠≠ÇÇ]]W]W]W]]Ç^à]Ç]Ç]^]à^àà≥¨¨]^]^]Ç]àÇàÇÇ]^˛]AÇ]Ç]à]^W^]^]Ç]Ç]à^Ç]àÇàÇ≠¨≥¨≠ÇàÇ≠¨≥ÅÄUVUVUVUVUUOVUUOU+1+U+1+U+1+U+U*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*++]]à^àÇà^àÇ≠¨≠àÇ]^W]3^Ç≠à≠à≠à≠à≠à≠à≠˝à@ÇàÇà^Ç^à]Ç]]2]]¨à¨àà3W]]2W3]3]3]]¨¨à3WW]3]]Ç]]W]2W3]2W3]3W3]3]W]2˛]W3]3WWÇà≥≠≠Ç^W]3]W]W]3]W^^Ç˝][W]W]WÇÇà]^W]W]W]W]]Ç]]W]W]W]WÇ]ÇW]W]]Ç]à]àÇà]^]àÇàà≠à¨Çà]àà≥¨¨VUOUOUOUOU+UOU+U+1*+*+*+*+*+*+.1*1++*1+1*1++*1+1*1++*1+1*1++*1+1*1++*1+1*1++*1˛+sÅÇàÇâàà^àà≠à◊≠≠^Ç]^]^]àà≥≠≠à≠àâà≠ààÇàÇà^à^Ç]Ç]^W^]^3W3Çà≥¨≠Ç]3]W]W]3]W]Wàà≥Ç]3]3^Ǩà¨]]3]3]W]W]W]3W3]W]W]W]3]W]W]3]Dz≥àà]]3˛]W]WW3^^à˝]
  2646. W^W]]^]Ç]^]^W^˛]K^]^]à]]W^W]WÇ]Ç]Ç]]WÇǨà≠à¨ÇÇ]Ç^àà≠à≠àà]ÇǨ¨≥àÄUVUUOVUUOVOUOUOU+1+1*1++*1+1*W*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+Wà^Ç^Ç]^]àÇ≠¨≥àÇW]3]W^]¨à≠ÇÇ^à^Ç^Ç]^]^˝]3]3]2W3]WW2W]¨¨≠àà3W3W3]2W3]2]]à¨à3W2WWàà≠¨àW32W2W3]2]3W2W3]3]3W2W3]3]3W]¨¨◊¨¨]]233]W]W]2W]Ç^]3]W]W]W]W]3W3]W]W]3]W]W^]ÇW]W]WÇ^à]Ç]^3]]àà≠à¨Çà]]WÇÇ≠¨¨Çà˛]"ÇÇ≠¨¨VVOU+UOU+UOU+UOU*+*+*+*+*+*+*+1+1*U+1*1+1*U+1*1+1*U+1*1+1*U+1*1+1*U+1*1+1*U+1*1+]^Ç]^]Ç]ÇÇ≠≠◊≠≠^^3^]^]àà≠Çà^Ç]à]]3^]^]^]]W^]]W]3W3^]]3à¨≥à≥Ç]3]W]3]W]W]]^Ç≥à]3]3]Ç≥≠≥Ç]2W3]W]3]W]3]W]W˛]W^˝]˛W¨≠◊≥◊¨à]]3]]^]]W]]Ç^à˛]à^^W^W]WÇ]^]Ç]]W^]Ç]àÇà]Dz]Aà¨≥à≠ÇÇ]^]àà≥≠≠ààÇÇWÇ^àà≥¨¨ÇÇ^àÇ≠¨≠ÇÅVVOVUUOVUUOVOUOU+1*1+1*U+1*1+N*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*V2^]^3]W^]Çà≥¨≥à^3W3]3^^à]^W^W˛]˛3y]W]3]3W3]3]W]3WW]W]]≠à≠àÇ233W2W3]3]3]3Ǩ≠WW2WWà¨≥àÇ332W2W2W2W2W3]3]3]]ÇÇà]]3]2WÅ≠¨≥≠≥àà]ÇW]W]W]W]]à^^3^^à]]W]3]]Ç]à]ÇW]W]]˛àG]Ç]]W]Ç≥¨≠ÇÇW]W^]à¨≥àÇ]ÇW]WÇ]¨¨≥àÇ]à]àà≠à¨ÅzOUOU+UOUOUOU+U+U*+*+*+*+*+*+]+*1*+*1++*1*+*1++*1*+*1++*1*+*1++*1*+*1++*1*+*1*1+]^Ç]^W^]Ç^à¨◊≠à]^W]3^^àÇà]]W^]^]]3WW^]]3]3W3˝]^]^]Ç]à¨≥à≠]]3]3]W]3]WW2]]≠àà˛WÇà≥¨àWW3]W]3]W]2]W]W]W]]à¨≥¨¨W˛]W]]¨¨≥≠◊≠≥àà]]W˛]WÇ^à˛]Ç^à]]W]]àÇ≠àà]Dz]$≠≠≥àà]ÇW^]à¨◊¨àW^W^WÇÇ≠¨≠ÇÇ]Ç]Ç]àà≥¨≠˛Çàਨ≥àÅVVOUOVUUOVUUO˛U +1++*1*+*1++*e*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*2WÇ]]3]W]]ÇÇ≠≠≥Ç^W]3WWÇÇà]]3W3]3]W]3]W]3]3W2W3]3]WÇ]à˛]≠à≠ÇÇ3W2W3]2W2W232]ǨÇ]2]Ç≠ààWW232W2W3]2W2]3]3W2]]¨¨≥Ç]2]W]2]]Ç]àà≥¨≠àà]]W]W]W^^]3]]àÇÇW]WÇÇ≠ààW]W]3^à≥¨à]^W]W]]¨¨≠]]3]W]]àà≠àà]0]W^W^]àà≠àÇ]Ç^àǨà¨ÅVOU+UOU+UOU+UOU++*+*+*+*+*+*+_U+1*1++*U+1*1++*U+1*1++*U+1*1++*U+1*1++*U+1*1++*U2]^à]^]Ç]Ç^≠≠◊≠â]^]^W^^àÇÇ]^W]3]W^]^W]3^]]W]W]3˛]Ç≠≠àWà≠≥à≠Ç]3]W]3]W]3]W]Wàà≥Ç]]˛à]]3]3]3]W]W]W]W˛]3]WÇà◊≥¨W˛]
  2647. W]W]3]]à¨≥≥◊¨à˛]Dz];à]]WàÇà]ÇW]Ç≠≠≥Ç^]^W^]¨¨◊àà]^]^]à¨◊¨¨]^W^]ÇÇ≠¨≠Çà]^]Ç]ÇÇ≠¨≠DzàÇ≠¨≥¨¨VVOVUVOVUUOV˛U
  2648. V++*U+1*1++*U+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*++V2^]^W]W^WÇÇ≠¨≥Ç^3]W]3ÇÇà]]3]3]3]3]W]3]W]W]3W2W3]WÇà≠Å]]≠à≠àà3W3W2]3W233]2WWà¨à ]]3]WW2W3W2W2W2W2W2W3]2W2]Ç≠≠≥ÇW2˛]W]233]]àà≥¨¨]]3]W]3˛^_W]W^W]W]3Çà≥¨àW]3]W^Ç≠¨¨W]W]W]]≠¨≥àÇ]]W]]ÇÇàÅÇ]^W]]Ç]^]àà¨à¨ÅÇÇ≠¨¨ÅÅOUOUOUOUOUOU+UOU*+*+*+*+*+*++*1*+*1*+*1*+*1*+*1*+*1*+*1*+*1*+*1*+*1*+*1*+*+*U2]W^W^]^W^^à¨◊≠à3^W^W^^àÇÇ]]W^]]W]W]W]W]W^]]3W3]3^Ç≠¨àWÇà≥¨≠Å]3]2W3]3W3]W]3]Å≥¨àWW3]2]W]3]3W2]3W2]3]3]3]]≠≠≥àà3WW]W]3W3]]àà≥¨≠Ç]W]W]3]]Ç]^]]W]W]3]]¨¨≥àÇW]W]]¨¨≥àÇW]W^]ÇÇ≠àà]Ç]]WÇ]Ç]Ç]^]^]Ç]Ç]^]≠¨≥¨à]à¨≥¨¨ÄVO    UOVUUOVUUO˛U +1*+*1*+*1*+*F*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*++VW^3W]^W]WÇÇ≠≠≥]W3]3W3˛Çl]^3]W]3W3]3]3]3]W]2W3W2WWàà¨Å]]≠¨≠ÇÇ3W232W2W2W2W3]2]Ç≠àÇ3]232]2W3W,323,32W2W2W]à¨≠Ç^3W2W3W232WWàà≠à¨]]2]3]2W2˛^8W]W]W]3W3ÇÇ≠¨à]]3]3]Ç≠àà]]W]3]W^]Ç]]W]W]W]W]W]W]W^W]]^WÇà˛¨#Ç^Ũà≠ÇÅOU+UOU+UOU+UOU+O*+*+*+*+*+*+M1*+*1++*1*+*1++*1*+*1++*1*+*1++*1*+*1++*1*+*1++*VV]]^W^]^]^^≠≠◊≠àW]W^W^^àÇÇ]^W˛]^W]W]W]3]W]3]W]3]WÇÇ≥≠àWǨ≥à≥Ç]3]3W3]3W3W3]3]WÇà≥ààW]3W2W3]3]W]2W3W2]W]WÇÇàÇÇ]]3]W]3]3]]àà≥¨≠Ç^W˛]fW]3W]â^]WÇ]Ç]^W]]àà≠ÇÇW]W^]àÇàÇÇ]Ç]]W^]^]Ç]^W^]Ç]Ç]^]Ç]Ç]Ç]Ç]àǨ¨◊¨¨]à¨≠¨≠ÅVOVUUOVUUOVUUOVOU*1*+*1++*1*F*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*++WW^W^W]W]WÇà≥≠≥Ç]3W3]W˛ÇlW]W]3]3]3W3]3W3]2W3]3]3]]àà≠]WW≠à≠àà233W,W3W232W232W2Çà≥à]2W,32W2W3]232W232W2]3]2W3]3]W]2W2]WÇà≠àà]]2]W]W]3W2˛^3]]Ç]]W]W]]Ç]^W]3W3]W]W˛]!W]3]W]W]]ÇW]W]]^]Ç]Ç]Ç]Ç]^WÇÇàǨ¨≠˛Ç ¨à≠¨ÅOUOU+UOUOUOU+UOU++*+*+*+*+*++*+*+*1*+*+*+*1*+*+*+*1*+*+*+*1*+*+*+*1*+*+*+*+*12^]^W^]^]ÇÇ≠≠◊≠àW]W]3^Çà]^W]W]3]3]W]W^W]]Ç]Ç]àÇÇ]àÇàÇÇ3^à≥¨≠]]3W2WW]3W232W3]2WWà¨≥à^3W2W2W3]3]2W3]3W3]3W2]3W2˛] W]3]]àà≥àà]]3˛]W]W]3]]à]]W^]ÇW]W^]^]^˛]O^W]W^]]WÇ]^W]W]W^]^]Ç]^]Ç]ÇÇ≠à¨ààÇÇ]ÇǨà≠à¨àà]ÇÇ≠¨≠ÅVOUOVUUOVUUOUOUOU++*+*+*1*+*F+*+*+*++*+*+*++*+*+*++*+*+*++*+*+*++*+*+*++W]^]]3]W]]àà≥≠≥]]3]3W3˛ÇlW]3]W]3]W]W]]^W^]à]àÇà]Ç]^W]2W]¨¨≠ÇÇ23232W2]23,32W2323Wà¨≥Ç]3]232W2W232W2W2]2W,32W,32]2W2]Wàà≠àà]W2WW]2W3]3W2˛^_W]W^]]2W3]W]3]3]W]3]W]W]]Ç]]3]3]]Ç]Ç]ÇW]]^]¨¨≠ààÇà]]WÇÇ≠¨¨]ÇW]]àà≠àÅUU+UOU+UOU+UOU+U+O*+*+*+*++\1*+*1*+*1*+*1*+*1*+*1*+*1*+*1*+*1*+*1*+*1*+*1*+*V]^]^]^]^]ÇÇ≠≠◊¨à]]W^]^Ç≠Ç^]Ç^à^àÇàÇàÇà^à]Ç]Dz]MÇ]]W]3W3à¨≥à≠Ç]2]W]3]W]2]3W2W3W2]]¨≠≥àà]]W]3]3]2]W]2]W]3W3]3WW]3]2]]≠≠≥àà]]3]W˛]W]3]W]]â^^WÇ^ÇW]W]W^˛]QÇ]^W^]^]àÇàÇà]]WÇ]àà≠àà]Ç]Ç]Ǩ◊¨≥àà]Ç]ÇÇ≠¨≥àà]^Wàà≠¨≥ÅÄUVUVUVUUOVUUOVUU+U*+*1*+*1*F*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+]W]W^W]W]]àà≥¨≠Ç^3]W]W˛Ç W^]Ç]Ç]Ç]Ç]Ç˝]\W]3W2W2W2W23,]]≠à≠àÇ233]2W2W2W2W232W232]]à¨≥àà]^]]W]232W2W2]2]2W2W2]232W]à¨≥àà]]232]W]3W2W2]W˛^'3]]à]]W]3]WÇ]Ç]à]]W]]ÇǨÇà]^W]]ÇÇ≥¨¨]^]Dz]4≠¨≥àÇ]^]Ç]ÇÇ≠¨¨ÇÇW^^¨à≠¨¨VUOUOUOUOUOUOUOU+O*+*+*+*+*++*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*V3^W^W^]^]àà≠¨≥¨à]^W]W^Çà]^]Ç]^W]3]W]3]3]3]WW2]3W2W3]2WWà¨≥¨¨]]2W3]WW2W3W2]3W2]31W2]]à≠◊≠≠ààÇÇ]]3W2]W]2]W]2]3]W]2]]≠≠≥àà]]W]3]W]WW2˛]$3]]^]^W^^à]^W^]^Ç≠à¨Çà]]WÇÇ≠¨¨ÇÇ]^]^]˛≠<àà]Ç]à]Çà◊¨¨]Ç]Ç]Ç^à¨≥¨à]Ç]àà≠¨≥ÅÅUUOVUUOVUUOVUUOU+U*+*+*+*+*,**+**+**+**+**+**+**+**+**+**+**+˛*+W3]3]W]W]]àà≠¨≠]]3]3WWàÇ^3]3]3W2W3W2W232W3]232W,32W232]]¨¨≠Ç]23232W22,32W23,32W,2,WWàà≥¨≠àà]^]^W^]ÇWW2]2W2]2W2]]àà≠ÇÇW]2]3]2]2W;2W3]2W3^]^3W3^^ÇW]W]Wà¨≠ÇÇ]]3]]àà≠ÇÇW]]^]^Ç≠àà]]W^]^]¨¨≥Ç^]^˛]*ÇŨ¨≠ÇÇ]Ç]àà≠¨àVV+UOU+UOU+UOU+U+U*+*+**+*+*+*1*+*+*+*1*+*+*+*1*+*+*+*1*+*+*+*1*+*+*+*1*+*VW^]^]^]^W^Ç≥≠≥¨à]]W^3]à≠]]3]W]W]W]W]W]3]W]3]3]3W3W2]W]Wà¨≥à¨]]2]3W2W2W2]332W3]2W,32]Wà≠◊≠≥àà]àÇ≠à≠ààW]3˛]d3]3]Ç≠¨≠àà]]W]W]W]WW2]W]3]W]]à^^3]]Ç]^W]WÇà≥¨à]]WÇ]ÇÇ≥¨à]Ç]Ç]Ç]à¨≥àà]Ç]Ç]àà≥¨¨ÇÇ]Ç]Ç]àà≠¨≠ÇàÇàÇ≠¨≥àÅV˝UVUUOVUUOVUUOU*+*1*+*+**+**+*+*+**+*+*+**+*+*+**+*+*+**+*+*+**+*+]W]]^3]W]Wà¨≥¨≠]]3]3]WààÇ3]3]3W3]3]3W2]3W2]3W2W23,3232W]≠¨¨Ç^2323,3232W23,22]2WJ2232W]≥≠≥¨àW]W]]Ç]Ç]]2]W]2W3]]àà≠Ç]W]2]3]2]W]232]2WW]3]]^]]W]3W3]W]WਨÅ]3˛]WÇà≠ÇÇ]]W]W^Ç≥¨¨]]W˝]4àǨÇÇW]]^W^]Ç]àà¨ÇÇ]ÇÇ≥¨¨ÅVOU+UOUOUOU+UOU+U*+**+*+*+U+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*V]^]^]^W]3Çà≥≠≥àà]^]]WÇà≠]]W]3]3W3]3W2˛]83]W]3]3W2W3W2W3Çà≥àà]]23,32W2W23,32W2]33,32W2à≠≥≠◊ÇW2]3]3˛]W]W]2WWÇÇ≠¨≠ÇÇ3W3˛]2]W]3W3W3]W^W]W^]à]]W]3]W^]]Ç◊¨à˝]<W^Ç≠¨¨Å^W]W]Wà¨≠ÇÇ]]WÇ]^]àÇÇW^]Ç]Ç]^WÇÇ≠¨≠ÇÇ]¨¨≥à¨VUOVUUOVUUO˛U OVOU*+*+*+*+*h**+**+**+**+**+**+**+**+**+**+**+**+]W]3]W]3]]¨¨≥àà]]3]3]WàÇ^3]3]3W2W2W232W2W3]232W2W3]332W]˛¨+Å]23,2,323232323232W,2,W23]≥¨≥≠à23232W2]2W2]˛2YÇǨà≠]]2W2W2]2W2]2W2W2]W]WW2W3^]]W]3W2W3W3à¨≠Å]3]3]WÇǨÇÇ3]W]3]]Ç]Ç]]3]W]W]W^W]W]]^W]W]]àà˛¨!]^Ç≠à¨Åz+UOU+UOU+UOU+UOU**+**+*K1*+*+*+*1*+*+*+*1*+*+*+*1*+*+*+*1*+*+*+*1*+*+*+*V^^W^]^W^]Çà◊≥≥Çà]]W^W]Ç≠]]W˛]e3]W]3]W]3]W]3^]]2]]ÇÇà]W3Ǩ≥à¨]W,W2W2]3W2W3]2W2W2W2W2]3à≠◊≥◊à^3]2W3]2]2W2]WÇà≥≠≠ÇÇWW2]3W2]WW2]W]]Ç]^W]˛W^^Ç]Ç]]W]W]W]Ç≠àà]]W˝]˛à]^]^]^˛](Ç]Ç]^]^]^]^]^]Ç]Ç]^]à^àÇ≠¨≥àà^¨¨≥¨¨VVUVUV˛UV˛U
  2649. VUUOU*+*+*+*1**+˛*+**+˛*+**+˛*+**+˛*+**+˛*+**+˛*'+*2Ç]]3]3]W]Wà¨≥àà]]3W3W3àà]2W3]3W3]232˛]3W2WÅàW32]]≠àÇ23]¨¨≠àDz,XW232]23232W2322,W2W23]≥≠≥≠àWW22,3,323,3WàÇ≠¨≠]]2W2W2W,33W,32]]^]]232W2]]^]]W]W]W]W]W^]]W]˛W]3]]^W˛]CW]W]W]]^]]W]W]W^W]]^]Ç]^W^]à]àà≠¨¨]^Ç≠¨≠ÅÄOUOUOUOUOUOUOU+U++**+**++*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*V]Ç]]W^W]3Çà≥≠≠àà]^W]3]à≠WW3]3]]ÇW]2W]¨]W2]]¨à^23Wà≠≥]33Çà≥¨¨]W,32]2W2]232W2W2W2732]232à≠≥≠◊à]2W23,W232W]àà≥¨à]]2W2W2W2W3]3W2W]Ç]]3W2W2]]˛^W]]Ç]]W^]]W]W]W^W]W]W]W]]^W]]^]^˛];Ç]^]Ç]Ç]àÇàÇàÇÇ]Ç]àÇ≠à≠à≠àÇ]à¨≥¨¨zUOVUUOVUUOVUUOVUU*+*+*+*+***+˛***+˛***+˛***+˛***+˛* **+**++]W]3˛]3W]¨¨≥àà]]W]2W]àÇ]2]2WW˛Ç)332ààÇ232]ÇàW22]]≠àW,W]¨à≠Ç]22,223,2,3,2,3˝2R,W232]≥¨≥≠à2322,223,W]àà≠ààWW22,323,32]2W2W3]WW232W2W2]]^WW3^]]3WW]3]W]3]W]3]W]W]W˛]>W]W]W]W]]^]^]Ç]ÇǨààÇà]Ç]^]à¨≠àà^à]ÇǨà≥¨Å+UOU+UOUOUOU+UOU++*+˛**+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*++V]^]^]Ç]^WÇà◊≥≥àà]]W]3^à≠]W3]WÇÇ≠Ç]2]à≠]]3]]¨à]2W]à¨≥]WWàà≠àà]W2W232W2W2W232W2327W2W232à≠◊≠◊à]2W23232]Ç≠¨≥ààWW3W,32W2]3W2]W]W^]]3]3W2]3W3˛^ 3]^Ç]]W]W^]]W˝]/^W]]Ç]Ç]àÇÇ]^]ÇÇ≠ààÇà^Ç]ÇǨ¨≥àà]à^à]àà≠¨≠Çà^à^àà˛≥ÄVUVUVUVUVUUOVUVUU++*+*+*+***+**+**+**+**+**+**+**+**+**+**+˛*?+2^W]]^W]3]]≠≠≥àà]]3]3]3àà^232]]ààÇ233ààÇ2]2]ÇàW32]]≠à]2]]¨à¨Ç]˛2
  2650. 3,2232323,2,3,˛2B,2,2]≥≠≥≠àW323223]àà≠ÇÇ22,W22,W232W,32]W]W]2W2]2W2W,W]^3W3^]^]]W]W˝] ^]]W]3]]àÇà]Ç]]W]]¨¨≠ÇÇ]ÇW]]ÇÇ≠¨¨˛W$Ç]^]àà≠àà]Ç]ÇŨ¨≥¨ÅOUOUOUOUOU+UOUOU+O˛*+**+a+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*++VW^]^]^W]WÇà≥≠≠Ç^3]W]3]Ç≠]]3]3ÇÇà]W2]à≠]W3^]≠àÇ]Ç]˛àBW]]àà≥ààWW23,3232W23,32W2W23,3232à≠≥≠◊à]2]2W,32]Ç≠Ç]2W23,W2W2W232W3˛]W]2]W˛]#3]2]W^]^W]]àÇà]^W]]àà¨Çà]^W]]à¨≥Ç^]Dz]?àà≥¨¨]^]Ç]Ç]¨¨≥àÇW]]Ç]ÇÇ≠¨≠Çà^Ç]àà≠≠≥ÅVOVUVOVUUOVUUOVUU++*+*+*+*˛*˛*˛*˛*˛*˛*˛*˛*˛*˛*˛***12]W˛]E3W3]]¨¨≥àÇW]W]W]WàÇ]2]3]]àÇÇW]WàÇÇ3]WÇ]Ç]]W]]ÇWW2]]¨¨≠]],2,2,2,2,3,2,3˛2m3,2,3,2]≥¨≥≠¨WW2W,2,32WW],2,222W2W22,32]3]2W232]2]2W2W3]3^]]2]]Ç]]W]3Çà≥àà]^W]W^Ç≠¨àW]W]W]]àà¨Ç^3]]^W^Ç≠¨¨]]W˛]$WÇà≥àà]ÇW]]àà≥¨ÅUUOUOUOU+UOU+UOU++**˛**+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*++]]^W^]]3^]àà◊≥≠Çà^Ç^à^àà≠]]WÇ^àà≠àà^àÇà]Ç]^]Ç]]2W3]W]23Wà¨≥ààW32]232W23232W2W2W2L323232Ç≠◊≥◊àÇ232W2323,32W2W,32]2]]W2]]^W]3W2W3]W]W]3]3]W^^ÇW]W]W^]]W]Ç≠¨≥Ç]W^˛]I¨≠◊àà]^]Ç]Çà≥¨¨]^]^]Ç]à¨◊¨ÇWÇ]Ç]ÇÇ≠¨≥àà]^]ÇÇ≥≠≥ÅÄUVUVUVUVUVUVUVUVOU*+*+*+***+**+**+**+**+**+**+**+**+**+**+˛*,+2^3]W]3WW^]¨¨≥àà^Ç^Ç^Ç^àÇ]2]W^]^]Ç]]WÇ]]WW3˛]22,3WÇ]W,W]≠¨≠Å],223,223,2,32323,2,3,22]≥≠≥¨àWW,223,2,222W23,32W2]2W3]3W2W232W2]232]2]2W3^]]2W2W3]3]WÇÇ≠àÇ3W3]3]Ç≠¨à]]W]W]]à¨≥ ÇÇ]]W]W]]≠¨¨˛],Ç]^]àÇàà¨ÇÇ]Ç]à¨≥àÅVVOUOUOUOUOUOUOUOU**+**+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+˛*s++WW^W]W^W]Wàà≥≠≥àà^à^Ç^àÇàW]3W3]WW2W23]àW32]]àÇ]23Wà≠≠WW3à¨≥¨àWW,2,W232W232W232W2323,2,à≥≥≠◊à]2W2W2W23,32W2]2W,32W2˛] 3W2W2]232]3W2˛] W]3W]Ç]]3]3]W]W]]≠¨≠Å]W]W]]à¨≥Ç^W˛]9WÇÇ≠¨¨ÇÇ]Ç]]Wàà≠Çà]^]à]à]à]àà≠ààÇàà≥¨≥ÅÅUVUUOVUVOVUUOVUUOU˛*+*+*˛***˛***˛***˛***˛***˛*D**12]3]3W3]3]^≠¨≠à≠Çà^Ç]Ç^ÇWW2W23W^WW22,ÇÇ]22]Åà22,]Ç≥à]2]]¨¨≠]]22˛22,2,2,2,˛2t,2,22]≥¨≠≠¨W222322,2,2,223,2,32]W]2323,22W,32W232]2W2W3^]]2W2W2W3]2]Ç≠àÇWW2]3]]¨¨àW]W]W]]Ç]ÇÅÇW]W]3]]Ç]^W]W]]Ç]Ç]^]˛¨!ÇàÅàà≥¨¨VVOU+UOUOUOU+UOUOU*****+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*++WW^W^]^W^]àà◊≠≥¨≠àâÇâàâÇÇ3W3]3Çàà]W2]à≥]32]]¨Ç],W]à¨≠]W]à¨≥àà]]232W,3,2,323232W2W22,22Ç≠≥≠◊àÇ22,W2W232323232W2W2˛]2W2]232W2]3]3]W]W]3W3˛^W˛] 3W3]W]]à¨≠]]3˝]Iàà¨ÇÇ]]W^]^]Ç]Ç]^W]W^]^]^W]W^]à]à]Ç]àà≥¨≠ààÇ≥≠≥àÅVUOVUVUVUVUVUVUVUU*+*+*+***˛*˛*˛*˛*˛*˛*˛*˛*˛*˛*
  2651. ***22W3]W˛]3^Ç≠≠≥¨≥à≠à≠à≠àà]]232W]àÇ]˛2¨à]232]Çà˛2 ]]≠à]2]]¨à¨Ç]˝2 ,2,22,2,22,˛2,2]≥¨≥¨àW3,,3˛23˛283,22]W]3323232W23,W2W2W2]2W2W2WW^]W2]2W2W2]W]]Ç]]2]W]3]WÇ˝]3]W]3]W¸]4W]]^]]W]W]]Ç]^]^W]]àà≠¨à]Çà≥¨¨ÅV+UOUOUOU+UOUOUOU***˛***+*+*+˛*+*+*+˛*+*+*+˛*+*+*+˛*+*+*+˛*+˛*12W3^W]]^˛]àà≥¨≥¨≠à≠à≠¨≥ààWW2W3˛à WW2]à≥]22]]àÇ]2]]à¨≠W33Çà≥ààW3,2,˛2˛2X,3232]3]3]3W3à≠≥¨◊à]22,223232W2W232]W^WW,32W2]2W2W2W2W3W2W2W2W3]]^3WW^]]3]W]W^W]3]W]W]W]W˛]+W]W]W]W]3^]]W^]Ç]Ç]Ç]Ç]à]Ç]^]Ç^àà≠¨≠ààÇ≠¨≥¨Å¸U VUUOVUUOVUVUU˛*+˛*]************************22W3]3]3]3]]àÇà]Ç]]W^Ǩà≠]W232W]à]W232àà]2WÇÇà˛WÇÇ≠Ç]2W]˛¨]W,˛2 ,2,3,22]]Ç]Ç^à^àà≠à≠¨¨WW222,2,¸2,W]]23˛,22W2W,22W˛243,22W232W2^WW2]]^3W3]3]W]2W3]3W3]W]W]W]W]3]W]3WW]3]W^˛]^]Ç]àÅÇ]^W]]àà¨à¨Çà]àDz¨ÅV+U+UOU+UOU+UOU+U++***@+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*+*12]]^3^W]W^W^]Ç]^]^˛W    à¨≠ààWW3]]˛àl]]WÇà≠]]WÇ]àÇ]W^]Ç]Ç233à¨≥¨¨]]W^]Ç]Ç]]2W,22]]àÇàÇàÇ≠à≠¨≥≠◊ààWW23,22W232]3WW]332W232W2W232W2]2W232W2]3W2]]^3]W˛^W]W^]]W]W˛] W]WÇ]^]Ç]Ç]^˛]˛Ç8]Ç^à]Ç]ÇÇ≠à¨à¨ÇÇ]Ç]àà≥¨≠ÇàÇàÇ≠¨≥¨¨VUOVUVOVUVUVUUOVUU*+*ˇ*****˛***˛***˛***˛***˛*0***V3]3]3]3]3]3W3]3W3W2]Ç≠àà]]2WWÇÇàÇà]Ç]àÅÇ]^W˛]42W2W2322,W]≠¨≠ààÇàÇâà≠à≠Ç]22,22]]Ç]^W]]àà≠¨≥¨≠Å]22,,˝232]WW,2223,223,2,32]2W,2,32W2W232^3]2W3^]]3W3]W]W]W]W]3]WÇ]Ç]Ç]]W]W]Ç≠ààÇà]ÇW]]à¨≠ààÇà]^]Ç]¨¨≠ÇÇ]à]àà≠¨≠ÅÄ+UOUOUOUOUOUOUOU++**˛***+˛*+˛*+˛*+˛*+˛*+˛*+˛*+˛*+˛*+˛*+**12]3^W]W]W]3]3]3]3W3]]àà≠àÇ3W3]W^W]W]W]WÇW]3]]Ç]]232Ç]],22Çà≥ààÇÇ]Ç]à]à≠≥Ç],3232]3W2W2]Ç≥≠≥≠◊¨àW2,22,22]W]3]2222W2W2323232,]W]2W23,W3W232]W^]]WÇÇà]ÇW]WÇÇàÇàÇÇW]]ÇÇ≠àà]^˛]^]¨¨≥àÇ]à˛]àà≠¨≠àà]Ç]^]àà≥¨¨Çà]àਨ≥¨¨V˛UOVUUOVUUOVUUOzÄÅÄÅÄÄVZ************************22W3W3]3]3]3]3]3W2W3]Ǩàà]W2W232W,223,]W322˛]022WÇ≠Ç33]¨ÇÇWW23,32W]≠≠¨W2,2,2,,22àà≥¨≥¨≥ÇW˛2 ,22WW]222,2,¸2",223,22W22,3,22]22,22^]]2]]à]ÇW]3]]˛¨ÇÇW]W]]à¨≥Ç]2WW]W^Ç≠¨àW˛]53]]àà≠àà]]W]W]]¨à¨àà]Ç]àǨà≠ÅÄOU+UOUOUOU+UOU+UU´´÷––´´+˛*+˛*+˛*+˛*+˛*+˛*+˛*+˛*+˛*+˛*+¸*
  2652. 12]W]3^W]3]W]W˛]93]3]]à¨≠ààWW2W2^Ç^232]Çà32,]]à]W2]¨¨≠W22à¨àWW23,2,WW¨≠◊à]˛2W222,2]Ç≥≠◊≥◊≠≥]WW]]^]Ç]]2W˛,/W232W2W2W2W2W2W2]232W2]W]232]]^W]W]]^W]W]]àà≥àÇW˝]IÇà≥¨¨WW3]W]]≠≠≥ÇÇ]^W]]ÇÇ≠¨≠ÇÇ]^W^]àà≥¨≠ÇàÇÇ]àà≠¨¨ÄVUVUVUVUUOVUVUUOzÅ÷÷◊–◊–Z************************V3]3]3]3W3]3]3]3W2W2]Ç≠àà]]23,3]¨]W,23àà]22˛Ç2,,]Ç≠à],WÅ≠^3,,,,Ũ≥àÇ22˛2,2,2àà≥≠≥¨≥¨¨]ÇÅàÇÇ]]22,22,3˛2W˛232323,˛2k,32W2W23,22^W]2W2W232W3]]¨¨àWW2]2]Wà¨≠Ç],W3]3]à≥¨¨]]W]W]]àà≥¨à]]W]W]]à¨≥àà]Ç]^Ũà≠àÅUUOUOUOU+UOUOUOUUÄ´÷–÷–÷˚*+˙*+˙*+˙*+˙*+˚*:12]3^]]3^W]W^W]3]3W2W]àà≠Ç^3W232à¨Ç232]à≠W22]Åà]]22Wਨ33W˛à322,,WÇ◊≥≠W2¸2˛,2,WÇ≥≠≥≠◊≠≥¨≥à≠àà]W,2,22322,W232W23,32W2323,W2]2]23,W2WW^WW2W3W2W2WWà¨≥àÇWW2]W]Ç≥≠¨WW3]W]]¨¨◊¨Ç]Ç]^]àÇ≠¨≥àÇW^]]WÇà≠¨≠àà]Ç]àÇ≠¨¨ÅÄUUOVUUOVUUOVUUOzĨ–◊–÷–w***********************+]3W3]3W3W2W3]3]3W232]ǨààWW23,WǨW2,32àÇW2WÇ]]22,]Ç≥ÇWW]à^W2,V,2V¨¨◊Ç]˛2%W2W22,,2Çà≥¨≥≠≥¨◊≠≥¨≠]3,2222,2,˛2,2,2,223,2,W2W22,2,22˛] 232W23232W]≠¨¨]W2W2W3à¨◊Ç]2W3W3]ި9]]W]W]]ÇÅàÇàW]W]3]WÇ]ÇǨÇÇ]Ç]à¨≠ÇÅVU+UOU+UOUOUOU+UOzÄ–´–´–+˛*+˛*+˛*+˛*+˛*+˛*+˛*+˛*+˛*+˛*+¸*
  2653. 1W^W]]^WW3]3]3˛](3]3]]à¨≠ÇÇ]]2]3ààÇ2W2]àà332]Åà]W2]]≠¨≠W23˛à
  2654. W]VÅ]áŨ¨◊––Åá˛ÅàÅÅ˝2W]¨à≥¨≥¨≥≠◊¨◊≠à22,2,322,3˛2*W2W2W23,32]2W232]WW2W232]]à]]2W3]WW2]WÇà◊¨à˛W]W]Ç≥≠≠]]W^W]]àà¨ÇDz]5^]^]Ç]Ç]^W]W^W]]^]à¨◊¨¨Çàà≥¨≠ÅÄUVUVUVUVUVUVUVUVU´œ÷´÷–z***********************+WW]3]W],33]3W3]3W232]Ç≠àà]]2W2]Ǩ]]W]]¨Ç^W]]Ç]ÇWW3]]ÇWW2]Ũá¨Å¨Å¨´¨´–¨÷´¨´¨´˛¨ÅÅ22,,22W3]W]W]Wà¨≥Ç],,,,˛],22,2,˛2,2,3,˛2,32W23,3˛2^]^3]2]2W2W2]WÇÇà]W2W2]WÇ]à]]3˛]W]]Ç˝]7W]W]W]W]W]W]3]W]3]W]Ũ¨≠àà]àà≠ààVUOUOUOUOUOUOUOU+UÄ÷´–´÷
  2655. **+˜*˛*˛*˛*˛*˛*˘*[+**13^W^]]3W3]3]W]3]3W2]]àà≠Ç]3WW]]ààÇ]Ç]ÇÇà]^]à^Ç]Ç]]W]W]VÅŨ´÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷ÅÅV]VV,˛2,˛22]˛≠*ÇW,,WÅ≥ÅW,2,2,323232323232W232W232]233^]]W˛] 2W3]3]]ÇW]W]3¸]W]W^˛]?^]]W]W]]^W]W^W]W^W]W]W]W^W]]à¨≥¨≠àÇÇ≠¨¨ÅÅUUOVUVUVUUOVUUOUU´–◊–÷–***********************+]3]3]3W3W2W3]2W2W2WWÇŨàà3W2]W]W]3]3W2W33,33]3W2]VÅÅ´Å´´¨´–´÷´–¨÷´÷¨÷´–´÷´÷–÷´–¨–4•¨´¨ÅÅ]ÅVW2V,]à≠àà2W]¨¨à2,2,2,2,2,2,2,32322,22W,˛2,W3^3]]^3W2W2W2]2W2]2WW]W]3]2˛]AW]W]3W3]W]3]3]W]3]W]W]W]3]W]W]Ũà¨àà]Çà≠à¨ÄV+UOUOUOUOUOUOU+UÄ––÷¨÷˛*˛*4***+*+*U*+*U+U*U*+*U*+*+********2W^]]W]W]3]W]3˛]3˝]à¨≥Ç]3]W]W]W]23233]˛2%]]Å]ÅÅ´´–´÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷–˛÷–÷––´¨˝ÅV]Å≥¨≥àÅV]]à¨≠ÇÇWW2322˝2W232]2W23,W2]2W2W3^]^]˛^W]2]W]3]3]W]W]]Ç]]3˘]&^]]WÇ]^W^]]WÇ]Ç]àÇÇ]^W]WÇǨà≠¨¨Çàà≥¨≥¨Å˛U
  2656. VUVUVUVUVUV˛U•¨÷–◊–!*****+*UOUUÄUzUÄzÄVÄUzUVUU+U˝*****+˛]+W]3]3]3]3W3]233]3]Ç≠àÇ3W2W23]àW233Ç]W2]\´´¨˛´E–´–´÷´–´÷´–´÷´–´÷´–¨÷´–´÷´–¨÷´÷–÷´÷¨÷´–¨–´¨´–´–¨÷´–´¨´´]ÇǨà¨Å]22,22˛2$223,2,22W2W22,W3]3]]^]]2W2]2]3]2]W]W˛]G3W3]W]W]W]]^]Ç]Ç]^W]3]]àà¨ààÇÇW]W]Ç≠¨≠àà]Ç]à¨≠¨¨ÅVOUOUOUOUOUOUOU+Uz¨¨÷¨÷+*U+UOUUVUÄzÄĕĴĴ•´•´•´§´§´Ä•˝Ä3zÄUzUU+U*+*23^]^W]3]W]3]3]3]3]3]]àà≥Ç]2322,à≠],WWÅŨ˛ÅE¨´–œ÷–÷´÷´÷´÷–÷´÷–÷´÷–÷¨÷¨÷¨÷–÷´÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷¨¨Å¨¨◊¨÷á˛Å]ÅVÅ]ÅV]V]2W2323232W233^]]3˛^
  2657. ]]W]3]]Ç]Ç]Ç]^˛]GàÇà]Ç]^W]]ÇŨààÇà]^W]Wà¨≥¨¨Çà]]W^]à¨◊¨¨]^]Çà≥¨≠¨¨UUOVUUOVUUOVUUOUUŨ◊–÷– +UUÄzÄÄ´•´´œ˛´œ•´´œ˛´œ•´•´•˛´7§´´œ´´•´ÄÄUU*U+W3]W]233]2W3]232W2W3]]¨àÇ23,23Ç≠W2VÅÅ´´–˛´œ˛´H–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–´–´–¨÷´–¨÷´–´÷´–´÷´–´÷´–¨÷´–´–´¨´¨˝Å]ÅV]2W2222W,WW^˛3,^]^]]232ÇÅàÇÇ]]W]2]Ç≠¨¨ÅÇWW3]]à¨≥Çà]]W]W]]≠¨¨˝])W]]ÇÇ≠¨≠Å]3W]àà≠à¨ÅV*UOU+UOUOUOU+UOzÅ÷¨÷¨÷´•´•œ´œ´÷œ÷œ÷œ–´÷´œ´–´–´÷œœ´÷´œ´÷œ÷œ÷œœ´œ´´§´ÄÅ3^]]3]3]3]W˛]3]W]3]]à¨≠]W3W2]]˛¨Å´´–´–œ÷–÷´÷´–´÷–÷¨÷¨–´÷–÷´÷–÷´÷–÷–÷–÷´÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷¨–´–¨¨´¨á¨ÅàÅáÅÅ]Ç]]2WWÇ]]W]2]Å≥≠¨]^W]W]1]¨≠◊àÇ]Ç]^]àà≥≠≠àà]ÇÇàÇ≠≠◊¨à]^]àà¨à≠¨≥¨à]]WÇÇ≠¨◊≠¨˝UOUOUOUUVUzUÄÅ÷÷◊–◊–
  2658. ´–´œ´œ´œ´œ´œ´œ˛´œ˛´œ˛´œ˛´œ•´´œ˛´0œ§´´œ§œ´œÅW3]3]3]2W3]3]W]2]233^Ç≠àÇ2]VÅÅ´•œ´–´œ´œ˛´|–´–´–´¨´–´–´–´–´÷´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–¨÷´–¨÷´–¨÷´÷¨÷´÷–÷¨÷¨–´¨•¨ÅÇWW2]W]2W3W3à¨◊Ç]2W3]]ÇÇ≥¨à˛WÇ]ÇÇ≠¨≠ÇDz]4àà¨à≥¨¨]]W^Ǩà≠¨≥àà]]3]Wàਨ≥ÅV+UOUUzUzVÄVÄzÄĨ¨÷¨–¨÷–´÷´œ´–´œ´œ´œ´œ´œ´–´œ´–´–´œ´œ´œ´œ´œ´œ´œ´œ´œ™œ´áWW3˛]W]3]W^]]3]332]]ਨá´Å˝´–´–´÷´–´–´–´÷´–´÷´÷´÷¨÷´÷´÷¨÷¨–´÷´÷´÷–÷´÷´–´÷¨–´÷–÷´÷–÷´÷¨÷´÷–÷¨÷–÷¨÷–÷¨÷¨÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷¨÷¨à]Å]ÅW]]Ç]àà≥≠¨W33KÇà¨à≥≠≥]W3]Ç≠à≠à◊¨à]]W^à≥à≠¨≥àÇW^]àà≥¨≠¨≠àà]Ç]ÇÇ≠¨≥≠¨VUUÄÄ´´–¨–´–´–´÷–÷¨÷–÷´˛´œ•´´œ˛´œ•˛´•´´œ•´´œ´œ´œ•´´œ•´§´§´§´§´§œ§´Å]3W3]3]3W2]3]2W3]2W]àŨ´¨´œ´œ´œ´œ´œ´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–/´–´–´–´–´–´÷´–´–´–´÷´–´–´–´÷´–´–´–´÷´–¨÷´÷¨–´¨Å¨˛Å(àǨà≠¨≠Ç]2]]≠à≠à≥àÅ2]]àà≥à≠¨¨]]W]Wàà¨à¨àà˛]*ÇÅàà¨Ç¨àà]Ç]Ç]àà≠¨≥ÅÄUÄĨ´÷÷◊–÷–÷¨÷¨÷´–´–´–/œ´–´–´œ´œ´œ´œ´–´œ´œ´–´œ´–´œ´–´œ´œ´œ´œ™œ´œ´œ´÷´àW˛]3]W]3]W]3]]ÅŨŨ´–´–´÷´–´÷´÷´÷´–´÷–÷´÷–÷´÷¨÷´÷–÷´÷–÷¨÷–÷´÷–÷´÷´–´÷–÷–÷¨÷´÷¨÷´÷–÷´÷–÷´÷–÷´÷–÷´÷–÷´÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷f¨÷–÷–÷–÷–÷–÷¨÷¨÷¨÷¨÷¨◊¨¨ÅÅ]àà≠à≠à≥ÇÇ]àÇ≠à≥¨≥ààÇàÇàà≠à≠¨≠à≠à¨à≠à≠à≠à≠à≠à¨à≠à≠à≥≠¨Å´¨÷–÷–÷–÷–÷œ÷–÷´÷–÷´÷œ
  2659. ´œ´œ´œ•´´œ•´´œ˛´œ˛´œ´œ´œ•´´œ•´´œ´œ´œ´œ´–´÷¨¨]]3]˛3    ]W]WÅ]ÅÅáÅ˝´œ´œ´œ´œ´œ´–´–´–´–´–´–´–´–´÷´–´–´–´–´–´–´–´÷´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–´÷´–´÷´–´÷´–´÷´––÷¨÷–÷´ ÷¨÷¨–¨¨´¨Å¨Å˛¨à˛¨ ÅàÇàÇàà≠ààÇàÇàÇàÇàà¨à¨à≠à¨à¨Ç¨à¨à˛¨à˚¨≤˛´÷–÷´–´–´–´–´–´–´–´–´–.œ´–´–´œ´œ´œ´œ´–´œ´œ´œ´œ´œ´œ´œ´œ´œ´÷´÷¨÷–÷¨÷–÷¨à˝]W]]ÇŨŨ´–´–´–´–´œ´–´–´–´–´÷–÷´÷´–´÷¨–´÷¨÷¨÷–÷´÷´÷´÷´–´÷¨÷´÷–÷´÷–÷´÷´–´÷¨÷¨÷œ–´÷´–´÷–÷¨÷–÷´÷––´÷œ÷¨÷––´÷´÷´÷¨–´÷¨÷´÷–÷´÷¨÷¨÷–÷¨÷!–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷¨÷¸¨≠à≠à≠ààÇàǨà≠à¨à≠¨≠¨≥˙¨÷˛¨÷¨÷¨÷–÷¨÷–÷´÷´–´÷´–´÷´–´÷´–´÷´÷´C§´´œ´œ´œ´–´–´œ´œ•´´œ•´•´§´´œ´œ´–´–´÷¨÷¨÷¨÷¨÷¨¨ÅÇ]ÅÅáÅ´Å´•´´œ´œ´œ´œ´œ˛´œ˛´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´¨´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–´÷´–¨ ÷¨÷–÷´–¨÷¨–¨–˘¨à¨à¸¨´¸¨+´¨´¨´¨´¨´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–œ´œ´œ´œ´÷–÷–÷–÷´÷´–´–´œ´÷œ÷´÷–÷–◊÷÷–◊–÷–÷–÷–÷¨¨´¨´–´÷œ–´÷œ–´÷´–´÷œ–´÷´–´÷¨÷´÷–÷´÷–÷¨÷–÷¨÷–÷–÷¨÷´÷–÷–÷–÷´÷–÷¨÷–÷´÷–÷¨÷–÷´÷–÷´÷–÷¨÷–÷´÷´÷´÷–÷´÷–÷´÷–÷´÷´÷´÷–÷´÷´÷´÷–÷´÷¨÷´÷–÷´÷–÷´÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷¨÷¨÷–÷–÷–÷–÷œ–´÷–÷œ÷œ–´÷–÷´÷–÷´÷œ÷´÷´÷´÷œ÷´÷œ–´÷–÷´÷–÷´÷–§œ§´§œ§œ´œ´–¨÷¨÷¨÷´–´–´–¨÷¨÷¨÷¨÷–÷¨÷¨÷´–´–´–´–´¨´–´œ´–´œ´œ´œ´–´œ´–´–´–´–´–´–´÷´–´÷´–´÷´–´÷´–´–´–´÷´–´–´–´÷´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´–´÷´–¨÷´–¨÷´–¨÷¨÷¨÷´÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷´–´–´–´÷´–´÷´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–œ™œ™œ§œ´œ™œ´÷¨÷–÷–÷–÷¨÷–÷–◊–÷–÷–÷¨÷–÷¨÷´–´÷´–´–´–´–´œ´–´–´–´–´÷´–´÷´÷´÷¨÷´÷´÷´÷¨÷´÷–÷¨÷–÷´÷¨÷¨÷–÷´÷¨÷´÷–÷¨÷¨÷´÷–÷´÷¨÷´÷¨÷´÷––´÷–÷´÷–÷´÷¨–´÷–÷´÷´–´÷¨÷´÷´÷´÷´–´÷¨÷´÷–÷´÷´÷´÷¨–´÷–÷´÷–÷´÷–÷–÷–÷´÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷´÷´÷´÷´–´÷´÷´÷´–´÷´–´÷œ–´÷–÷´÷´–´÷´–´÷´–´÷´–´÷œ–´÷´–´÷´–´÷´÷´+§´§´§´§œ§´§´§œ´÷¨÷¨÷¨–¨÷¨÷¨÷¨÷¨÷´–´–´œ´œ´–´œ˛´œ˛´œ´œ´œ˛´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´8–´–´–´–´–´–´÷´–¨÷´–´÷¨–¨÷´–¨÷´–´–´–´–´–´–´œ´–´–´–´œ´–´–´–˛´–´–´–´–´–´–´–´œ´–´–´–´–´–´–´–˛´–´–œ´œ´œ´œ´œ´œ™œ´÷–◊–÷–◊÷÷–÷–÷¨÷–÷´÷´–´÷´œ´–´–´–´–´–´–´÷´–´–´–´÷œ÷¨÷–÷´÷–÷¨÷–÷´÷–÷¨÷–÷´÷–÷¨÷–÷´÷–÷–÷–÷´÷–÷¨÷–÷¨÷–÷–÷–÷´÷–÷–÷–÷´÷–÷–÷–÷¨÷–÷–÷–÷´÷–÷´÷´÷´÷–÷´÷¨÷´÷–÷–÷–÷´÷–÷¨÷–÷´÷–÷´÷–÷´÷–÷–÷–÷¨÷¨÷–÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷´÷–÷´÷´–´÷´–´÷œ÷´÷´÷´÷´–´÷´–´÷–÷´÷œ÷´÷´–´÷œ÷´÷œ÷´÷–÷´÷œ÷´÷´–´÷´%´œ•œ´œ´œ´œ´œ´–´÷¨÷¨÷¨÷¨–´–´œ´–´œ´œ´œ´œ˛´œ´œ´œ´œ´œ´œ´–´–´–´–´–´–´–´–´÷´–´–´–´÷´–´–´–´÷´–´–´–´–´–´÷´–´–´–´–´–´–´–¨÷´–´÷´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–´÷´–¨L÷´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–¨÷´–¨÷´–¨÷´÷¨–´–´–´–´–´œ´–´–´–´œ´–´–´–´œ´–˛´ –´–´–´–´–´œ´–´–´–´–´–´–´–´œ´–´œ´––´÷´–´÷´–´÷–÷¨÷–÷–÷–÷¨÷´–´–´œ´œ´œ´–´œ´–´œ´–´–´÷´–´÷´÷´÷–÷´÷–÷¨÷–÷¨÷–÷¨÷–÷´÷–÷¨÷–÷´÷¨÷´÷¨÷´÷–÷´÷–÷¨÷¨÷´÷–÷´÷¨÷´÷–÷´÷¨÷´÷–÷´÷´÷´÷–÷´÷¨÷´÷–÷´÷–÷´÷–÷´÷–÷´÷¨–´÷¨÷´÷–÷´÷¨÷´÷–÷¨÷¨÷´÷–÷´÷´÷´÷–÷´÷–÷´÷––´÷–÷¨÷–÷¨÷¨÷¨÷–÷¨÷–÷¨÷¨–´÷´–´–´–´–´–´÷´–´–´–´–´–´–´–´–´–´÷´–´÷´–´–´–´÷´–´÷´–´÷´–´÷´–´÷´–´´–´–´–´÷´–¨÷¨÷¨÷¨–´–´œ´œ˛´œ˛´œ´œ´œ´œ´–´¨´–´–´÷´–´–´–´÷´–´–´–¨÷´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´8–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´¨´–´–´÷´–´–´–¨÷´–¨÷´–´–˛´–˛´œ˛´–´–´–´œ´œ˛´œ˛´–´œ´œ˛´–´–´–˛´ –´œ´–´œ´–´œ´œ˛´–´–´–´–÷´÷¨÷–÷–◊÷÷–◊–÷¨÷œ–´÷´–´÷´–´÷´–´÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷–÷¨÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷´÷–÷´÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷´÷¨÷¨÷–÷–÷¨÷´÷¨÷¨÷–÷¨÷–÷´÷–÷¨÷¨÷¨÷–÷–÷–÷¨÷–÷¨÷–÷´÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷´÷´–´÷´–´÷œ÷´÷´–´÷œ÷´÷´–´÷–÷´÷´–´÷œ–´÷´–´÷´–´÷´–´÷´÷´÷´–´÷œ–´÷œ÷´÷–´–´–¨÷¨÷–÷¨÷¨÷´–´–´–´–´–´–´–´÷´–¨÷´÷¨÷´–¨÷¨÷¨÷¨÷¨÷¨÷¨÷´–¨÷´–¨÷´–¨÷´÷¨÷´–¨÷´–¨÷´–¨÷´–´–´–¨÷´–´–´–´÷´–´÷´–´÷´–´–´–´÷´–´–´–´÷´–´–´–´÷´–´–´–´–´–´–´–´–´–´÷´–´÷´–´–´–´–´–´÷´–¨÷´–´÷´–´–´–´÷´–´÷´–´–´–´÷´–¨÷´–¨÷´–¨÷´–¨÷´–´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´œ´–´–´–´œ´–´–´–´–´–´–´–´œ´–÷¨÷–÷¨÷–÷–÷–÷¨÷¨÷´÷–÷´÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷¨÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷¨÷´÷–÷¨÷–÷´÷¨÷¨÷¨÷´÷¨÷´÷–÷¨÷¨÷´÷–÷´÷¨÷´÷–÷´÷´÷´÷–÷´÷¨÷´÷–÷¨÷–÷¨÷¨÷´÷¨÷¨÷–÷¨÷¨÷¨÷¨÷´÷–÷´÷¨÷´÷–÷¨÷–÷´÷–÷¨÷–÷¨÷–÷¨÷–÷´÷–÷–÷––´–´–´÷´–´÷´–´÷´–´÷´–´÷œ–´÷´–´÷´–´÷œ÷´÷´–´–´–´÷œ–´÷´–´÷´–´÷œ–´÷´–´÷´–´´–¨÷´–¨÷´–´–´–´–´–¨÷´–¨÷´–¨÷´–¨÷¨–¨÷´–¨÷´–¨÷´–´÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨–´–¨÷´–´–´–´÷´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–c´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–´–´–´÷´–´–´–´–´–´÷´–´–´–¨÷´–´÷´–´÷´–´–´–´–´œ´œ´œ´–´œ´–´œ´œ˛´2–´œ´–´œ´–´œ´–´œ´–´–´–´œ´–´–´–´–´–´–´–´œ´–´œ´–´–´–´œ÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷´÷–÷¨÷–÷¨÷–÷´÷–÷´÷–÷¨÷–÷´÷–÷–÷¨÷¨÷–÷¨÷–÷´÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷´÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷––´–œ÷´÷´–´÷´–´–´–´÷´–´÷´–´÷´–´–´–´–´–´÷´÷´÷œ÷´÷œ÷´÷´–´÷´–´÷œ–´÷´–´÷–÷´÷´¨÷¨–¨÷¨÷¨÷´–¨÷¨÷¨÷´÷¨÷¨÷¨÷´–¨÷´–¨÷´–¨÷´–¨÷¨÷¨÷¨–¨÷´–¨÷´–¨÷´–¨÷¨÷¨÷´–¨÷¨–¨÷´–¨÷´–¨÷´÷¨÷´–¨÷´–¨÷´–´÷´–´÷´–´–´–´÷´–´–´–´–´–´–´–´–´–Y´–´–´÷´–´–´–´–´–´÷´–´–´–´–´–´÷´–´–´–¨÷´–´–´–´–´–´÷´–´÷´–´÷´–¨÷´–¨÷¨–¨÷´÷¨÷´–¨÷¨÷´–´œ´–´–´–˛´ –´œ´œ´–´–´–´–˛´,–´–´–´œ´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–÷¨÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷¨÷¨÷–÷¨÷–÷´÷–÷´÷–÷¨÷–÷´÷–÷´÷–÷´÷¨÷¨÷–÷´÷–÷¨÷¨–´÷¨÷´÷–÷¨÷¨÷´÷–÷´÷¨÷¨÷–÷´÷–÷¨÷–÷´÷–÷´÷¨÷¨÷¨÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷¨÷¨÷–÷´–´–´÷´–´–´–´÷´–´÷´÷´÷´–´÷´–´÷´–´–´–´÷´–´÷´–´÷´–´÷œ–´÷´–´÷´–´÷œ–´–´÷´÷´–´¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷´–¨÷¨–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–´–´–¨÷´–´÷´–¨÷´–¨÷´–¨÷´–´–´–¨÷´–¨÷´–¨÷´–´–´–¨÷´–´÷´–´÷´–´÷´–´–´–´–´–´–´–´–´–´–W´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–´÷´–¨÷´–´÷´–¨–´–´–´œ´œ´œ´–˛´–´–´–˛´ –´–´–´–´–´–´–˛´–´œ´–´–´–´œ´–´–´–´œ´–˛´–´–´–˛´–´–´–´–◊÷÷–◊–÷–◊÷÷–÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷´÷¨÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷´÷œ–´–´–´÷´–´÷´–´÷´–´÷œ–´÷œ÷´÷–÷´÷´–´÷´–´÷–÷´÷´–´÷œ÷´÷œ–´÷œ÷´÷œ÷´÷œ÷´÷´–´÷œ–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷´–¨÷¨÷¨÷´–¨÷¨–¨÷¨÷¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷¨÷¨÷´–´÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷¨÷¨÷´–¨÷´÷¨÷´–¨÷´–´÷´–´÷´–´–´–´÷´–´–´–¨÷´–´–´–´÷´–´–´–´÷´–´÷´–´–´–´–´–´–´–¨÷´–¨÷´–¨÷´–¨÷´–´÷´÷¨÷¨÷¨÷´–¨÷¨–¨÷´œ´–´œ´–´–´–´–´–´œ´–´œ´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´œ´–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷´÷–÷¨÷¨÷¨÷–÷¨÷¨÷´÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷¨÷´÷–÷´÷–÷´÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷¨÷´÷´–´÷´–´÷´–´÷´–´–´–´÷´–´÷´–´–´–´÷´–´÷œ–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´÷´÷´–´÷´–´¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷¨÷¨÷¨÷¨÷´–¨÷´–¨÷´–´÷´–¨÷´–´–´–¨÷´–¨÷´–´–´–´–´–¨÷´–¨÷´–¨÷´–´÷´–¨÷´–´÷´–¨÷´–´–´–¨–´–´–´–¨÷´–´÷´–¨÷´–´÷W´–´–´–´–´–´–´–´–´–´÷´–´–´–¨÷´–´–´–´–´–´–´–´÷´–´–´–¨÷´–´–´÷¨÷´–´÷¨÷¨÷´–´–´–´–´œ´–´–´–´œ´–˛´œ´œ´œ´–´–´–´–´œ´œ˛´–˛´–´œ´–´–´–´œ´–´–´–˛´–´–´–´–´–´–´–´–´–´œ◊–÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊–÷–◊–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷´÷´–´÷´÷´÷´÷´÷´–´÷´–´÷´÷´÷œ÷´÷´–´÷´–´÷´–´÷œ–´÷œ–´÷´–´÷´–´÷´÷´÷œ–´÷œ÷´÷´–´÷œ÷´÷œ¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷´–¨÷´–¨÷´÷¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–´÷´–¨÷´–¨÷´–¨÷´–´÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–´–´–¨÷´–´÷´–´÷´–¨÷´–¨÷´–´÷´–¨÷´÷¨÷¨÷¨÷´–¨÷´–¨÷¨÷¨÷´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´œ´–´–´–´–´–´–´–´œ´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–◊–÷¨÷–÷–◊–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷¨÷¨÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷´÷´–´÷´–´–´–´÷´–´–´–´÷´–´÷´–´÷´–´–´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´–´–´÷´–´÷´–´÷´–´÷´–´¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷¨–¨÷´–¨÷´–´–´–¨÷´–´–´–¨÷´–´–´–´÷´–´–´–¨–´–´–´–¨–´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷K´–´–´–¨–´–¨÷¨–¨÷´–´÷´–´–´–´–´–´÷´–¨÷´–´÷´–´÷´–´÷´–´÷´–´÷´–¨÷´–¨÷´–´–´–¨–´–´–˛´–´œ´–´œ´–˛´ œ´œ´–´–´–´–´–˛´–´–´–´œ´–´œ´–´œ´–´–´–˛´–´œ´–˛´–´œ´–´œ´–˛´–´œ◊÷÷–◊–÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊÷÷–◊÷÷–◊–÷–◊÷÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷´÷´÷œ÷´–´÷–÷´÷´–´÷œ–´÷´–´÷–÷´÷œ–´÷œ–´÷œ÷´÷œ÷´÷´–´÷–÷œ÷œ÷´÷œ÷´÷œ÷´÷´÷´÷œ–´÷œ÷´÷´÷´÷–¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷´–¨÷¨÷¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷¨÷¨÷´–¨÷´–¨÷¨÷¨÷´–¨÷¨–E¨÷´÷¨÷´–¨÷¨÷¨÷¨÷¨÷´÷¨÷´–¨÷¨÷¨÷´–¨÷¨÷¨÷´–¨÷¨÷¨÷¨–¨÷´÷¨÷´–¨÷¨÷¨÷´–¨÷¨–´–˛´–´–´–˛´–´–´–´–´–´–´–´–´–´–´–˛´0–´–´–´–´–´–´–´œ´–´–´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´–÷–◊–÷–÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–◊–÷–◊–÷–◊–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷–÷¨–´–´–´÷´–´–´–´÷´–´÷´–´÷–÷´–´–´÷´–´÷´–´÷œ÷´÷´–´÷´–´÷œ–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´÷´÷–÷´÷´–´¨÷¨÷¨–¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷´–´÷´–¨÷´–´÷´–¨÷´–´÷´–´÷´–´÷´–¨÷´–¨÷´–¨÷´–´÷´–¨÷´–´–C´–¨÷´–¨÷´–¨÷¨–¨÷¨÷¨÷´–¨÷¨–¨÷´–¨÷´÷¨÷´–¨÷´÷¨÷´÷¨÷´–¨÷´–¨÷¨–¨÷´–¨÷´–´–˛´œ´œ´–˛´$œ´œ´–´œ´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–˛´"–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–◊–÷–◊–÷–◊–÷–◊–÷–÷–÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊÷÷–÷–÷–◊÷÷–÷–÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷–÷––´÷´–´÷´–´÷œ÷´÷´–´÷œ÷´÷´–´÷–÷´÷´÷´÷¨÷´÷–÷´÷–÷´÷–÷´÷´÷œ÷´–´÷–÷´÷–÷´÷–÷´÷´–´÷–÷´÷´÷´÷´÷´÷œ¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷´–¨÷´–¨÷´÷¨÷¨÷¨÷¨÷¨÷´–¨÷´–¨÷´÷¨÷´–¨÷¨÷¨÷´–¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷´–¨÷¨÷¨÷´–´–´œ´–´œ´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–´–´–´–´–´÷´–´–´–´–´–´–´–´–´–´–´–´–´œ´–÷–÷–÷–◊÷÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷œ–´÷´–´÷´–´÷´÷´÷¨–´÷´÷´÷´–´÷¨÷´÷–÷´÷¨÷´÷´–´÷´÷´÷––´÷´÷´÷––´÷–÷´÷¨–´÷´–´÷´–´÷´–´÷œ–´÷´–´÷´–´¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨–´–¨÷´–´÷´–¨÷´–¨÷´÷¨÷´–¨÷´–¨÷´–¨÷¨÷¨÷´–¨÷¨÷¨÷¨–¨÷¨÷¨÷¨–¨÷¨÷¨÷¨–¨÷¨–¨÷¨÷¨÷´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´œ´–´œ´–´–´–´œ´–´–´–´œ◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊÷÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–◊÷÷–÷–÷–÷–÷¨÷´÷´÷–÷´÷´÷´÷–÷´÷¨÷´÷––´÷–÷´÷–÷–÷–÷´÷–÷´÷œ÷´÷œ÷´÷–÷´÷–÷´÷œ÷´÷–÷´÷´÷´÷–÷´÷´–´÷œ–´÷œ–´÷œ–´÷œ÷´÷œ¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷´–¨÷´÷¨÷´–¨÷´–¨÷´–´–´–´÷´–¨÷´÷¨÷´–¨÷´–¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´÷´œ´–´–´–´–´–´–´–´–´–´œ´–´–´–´–´–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷–◊–÷–÷–÷–÷–÷–◊–÷–÷–÷–◊–÷¨÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷´÷¨÷¨÷–÷´÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷´–´–´÷¨–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷œ–´÷´–´÷´–´÷´–´÷´–´÷´÷´÷´–´÷œ–´÷œ–´÷´–´÷´–´÷´÷´¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷´–´–´–´÷´–¨–{´–¨÷´–´–´–´–´–´–´–´–´–´–´–´÷´–´÷´–¨÷´–´÷¨÷¨÷´–´–´–´÷´–´–´œ´–´œ´–´–´–´œ´–´œ´œ´œ´œ´–´–´œ´–´œ´–´œ´–´–´–´œ´œ´–´–´œ´–´œ´–´œ´–´–´–˛´–´–´–´œ´–´–´–´œ´–´–´–˛´–´–÷–÷–◊÷÷–÷–÷–◊÷÷–÷–÷–◊÷÷–÷–÷¨◊÷÷–◊–÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊–÷–÷–÷–◊÷÷–◊–÷–◊–÷–÷–÷–◊÷÷–÷–÷–◊÷÷–÷–÷–◊÷÷–◊–÷–◊–÷–◊–÷–◊÷÷–◊–÷–÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷´÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷¨÷¨÷´–´÷œ–´÷´÷´÷´–´÷œ÷´÷œ–´÷œ–´÷œ÷´÷œ÷´÷´–´÷œ÷´÷œ–´÷´–´÷œ–´÷´÷´÷´–´÷œ–´÷œ÷´÷œ–´÷œ÷´÷´–´÷´÷´÷œ÷´÷´–´÷´–´÷´¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨–¨÷¨÷¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–¨÷´–´–´–´–´–´÷´–´÷´–¨÷´–´–´–´–´–¨÷´–´–´–´–´–´–´–´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´œ´–´–´–´œ´–´–´–´–´–´–´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´–´œ´–÷–÷–÷–◊–÷¨÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–◊–÷–÷–÷–◊–÷–◊–÷–÷–÷–÷–÷–◊–÷¨÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷¨÷–÷´÷–÷´÷¨÷¨÷–÷´÷–÷¨÷–÷´÷–÷´÷–÷¨÷–÷´–´–´÷´–´–´–´–´–´–´–´÷´–´÷´–´÷´–´–´–´÷´–´÷´–´÷´–´–´÷´÷´–´–´–´÷œ–´–´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´÷´÷´–´¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷1¨–¨÷´–¨÷´–´–´–´–´–´–´–´–´–´–´–´÷´–´–´–´–´–´÷¨–´–´–˛´œ´–˛´œ´œ´œ˛´œ´œ´–˛´–´–´–´–´–´œ´–´–´–´œ´–˛´–´–´–˛´ œ´œ´–´œ´–´–´–˛´–´–´–´œ´–´–´–´œ´–´œ´–˛´–´–´–´œ◊÷÷–◊–÷–◊÷÷–÷–÷–◊–÷–÷–÷–◊÷÷–÷–÷–◊÷÷–÷–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊÷÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊–÷–◊–÷–÷–÷–÷–÷¨÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷–÷–÷¨÷–÷´÷–÷´÷œ÷´÷´–´÷–÷´÷œ÷´÷œ÷´÷´–´÷œ÷´÷–÷´÷´–´÷–÷´÷–÷´÷œ–´÷´÷´÷œ–´÷œ÷´÷œ÷´÷œ–´÷œ÷´÷œ÷´÷œ÷´÷´–´÷œ–´÷´÷´÷´–´÷´–´÷–¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷–÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷´–¨÷´–´–´–´÷´–´–´–´÷´–´÷´–´÷´–´÷´–´–´–´–´–´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´–´œ´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–÷–◊–÷–÷–÷–÷–÷–÷–÷–◊–÷¨÷–÷–÷–÷–÷–÷–◊–÷–÷–÷¨÷–÷–÷–÷–◊–÷–◊–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷¨◊–÷¨÷–÷–◊–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷–◊–÷–◊–÷–÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷´÷¨÷´÷¨–¨÷¨÷¨÷–÷–÷–÷¨÷–÷´÷´–´÷´–´÷´–´÷œ–´–´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷œ–´÷œ–´÷´–´÷œ–´÷´–´÷œ–´÷´–´÷´–´÷œ–´–´–´÷´–´÷´–´¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷3¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷´–´–´–´–´–´–´–´÷´–´–´–´–´–´œ´œ´–˛´4–´–´–´œ´–´–´–´œ´–´–´–´–´–´œ´–´–´–´–´–´–´–´œ´–´–´–´–´–˛´–´–´–˛´–´œ´–´œ´–´œ´–´œ´–´–´–˛´
  2660. –´–´–´–´–´–◊–÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊÷÷–÷–÷–◊÷÷–÷–÷–◊–÷–◊÷÷–◊–÷–◊–÷–◊–÷–◊–÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊–÷–◊–÷–◊–÷–÷–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊–÷–◊–÷–◊–÷–÷–÷–◊–÷–◊–÷–◊÷÷–◊–÷–÷–÷–÷–÷¨÷–÷–÷–÷¨÷–÷¨÷–÷¨÷œ–´÷´–´÷´–´–´–´÷´–´÷œ÷´÷´÷´÷´–´÷œ÷´÷´–´÷–÷´÷´–´÷œ÷´÷´–´÷–÷´÷œ–´÷´–´÷´÷´÷´–´÷´–´÷œ–´÷´–´÷œ÷´÷´–´÷´–´÷´–´÷œ÷´÷–¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷´–´÷´–´–´–¨÷´–´–´–´–´–´–´–´–´œ´œ´œ´–´œ´–´–´–´–´–´–´–´–´–´œ´–´–´–´–´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´–´œ´–´–´–´–´–´–´–´–´–´œ´–´–´–´–´–÷¨÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷¨÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–◊–÷¨÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–◊–÷¨÷–÷–÷–÷–÷–÷–÷–÷¨÷–÷–◊–÷¨÷–÷¨÷–÷´÷¨÷¨÷–÷¨÷–÷´÷´–´÷´–´÷´–´–´–´–´–´÷œ–´÷´–´÷´–´÷´–´–´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷œ–´–´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷+¨–¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷¨–¨÷¨–¨÷´–´–´–¨÷´–´–˛´Hœ´œ´–´œ´–´œ´–´œ´–´œ´–´œ´–´œ´–´–´–´œ´–´–´–´œ´–´œ´–´œ´–´œ´–´œ´–´–´–´œ´–´œ´–˛´ –´–´–´œ´–´–´–˛´–´–´–´–´–´–´–´´◊–÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊÷÷–◊–÷–◊÷÷–◊÷÷–◊÷÷–◊–÷–◊÷÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊–÷–◊–÷–◊÷÷–◊÷÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊–÷–◊–÷–◊–÷–÷–÷–÷–÷–÷¨–´÷œ–´÷´–´÷œ÷´÷œ–´÷œ÷´÷œ–´÷œ÷´÷´–´÷œ–´÷´–´÷œ÷´÷´–´÷œ÷´÷œ÷´÷´÷´÷´–´÷–÷´÷´÷´÷œ÷´÷´÷´÷œ÷œ÷œ÷´÷´–´÷–÷´÷œ–´÷œ÷´÷œ¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷´–´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´œ´–´–´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–´–÷–◊–÷¨÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷¨÷–÷–◊–÷–÷–÷–÷–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷–÷–÷–◊–÷¨÷–÷¨÷––´÷´–´÷´–´÷œ–´÷´–´÷´÷´÷œ–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷´–´÷œ–´÷´–´÷œ–´÷´–´÷´–´÷´–´÷´–´÷œ–´÷´–´÷´–´÷´–´÷´–´¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷–÷¨÷¨÷s¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨÷¨–¨÷¨÷¨÷´–´–´œ´–´–´–´œ´–´œ´–´–´–´œ´–´œ´–´œ´–´–´–´œ´–´–´–´œ´–´œ´–´–´–´œ´–˛´"–´–´–´–´–´–´œ´–´–´–´–´–´–´–´–´–´–´œ◊–÷–◊–÷–÷–÷–◊÷÷–◊–÷–◊–÷–◊–÷–◊÷÷–◊–÷–◊–÷–÷–÷–◊÷÷–÷–÷–◊÷÷–◊–÷–◊÷÷–÷–÷–◊÷÷–◊÷÷–◊–÷–◊–÷–◊÷÷–÷–÷–◊÷÷–◊–÷–◊÷÷–÷–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊–÷–◊–÷¨◊–÷–◊–÷–◊–÷–÷–÷–◊÷÷–◊–÷–◊÷÷–◊–÷–◊–÷¨÷œ÷´÷œ÷´÷´–´÷´÷´÷œ–´÷–÷´÷´–´÷œ÷´÷´–´÷œ÷´÷´–´÷œ÷´÷´–´÷´–´÷œ÷´÷´–´÷œ–´÷œ÷´÷œ–´÷œ÷´÷´÷´÷œ÷´÷´÷´÷œ÷´÷´
  2661. d
  2662. 4,±L
  2663. °dONLNd$·8ÔÓ(
  2664. VTECHNIQUES FOR WRITING°dONLNd;Ó8¸´*
  2665.  
  2666. AND DEBUGGING°dONLNdI˚8    ô*
  2667. COMPONENTS°dONLNdT8"*TIME BASES: THE HEARTBEAT°dONLNdn!8/ô*
  2668. OF QUICKTIME°dONLNd{:8HÕ*BETTER APPLE EVENT°dONLNdéG8U¯*
  2669. CODING THROUGH OBJECTS°dONLNd•`8n¸*ANOTHER TAKE ON GLOBALS°dONLNdΩm8{“*
  2670. IN STANDALONE CODE°dONLNd–Ü8î»*COMPONENTS AND C°dONLNd‡Ö»ìÿ(ÆÊ++°dONLNd„ì8°À(ºVCLASSES COMPARED°dONLNdÙ¨8∫·*ANIMATION AT A GLANCE°dONLNd
  2671. ≈8”´*TOP 10 PRINTING°dONLNd“8‡®*
  2672. MISDEMEANORS°dONLNd'Î8˘A*K°dONLNd(Î@˘w)ON & BA°dONLNd/Îw˘)7L°dONLNd0Î~˘Ì)’S PUZZLE PAGE°dONLNd?8≤(-VMACINTOSH Q & A
  2673. eVxkòÄHH‡µHu◊ˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇˇˇˇˇÃÃˇˇÃÃÃÃˇˇôôÃÃˇˇ    ffÃÃˇˇ
  2674. 33ÃÃˇˇ ÃÃˇˇ ˇˇôôˇˇ
  2675. ÃÃôôˇˇôôôôˇˇffôôˇˇ33ôôˇˇôôˇˇˇˇffˇˇÃÃffˇˇôôffˇˇffffˇˇ33ffˇˇffˇˇˇˇ33ˇˇÃÃ33ˇˇôô33ˇˇff33ˇˇ3333ˇˇ33ˇˇˇˇˇˇÃÃˇˇ ôôˇˇ!ffˇˇ"33ˇˇ#ˇˇ$ˇˇˇˇÃÃ%ÃÃˇˇÃÃ&ôôˇˇÃÃ'ffˇˇÃÃ(33ˇˇÃÃ)ˇˇÃÃ*ˇˇÃÃÃÃ+ÃÃÃÃÃÃ,ôôÃÃÃÃ-ffÃÃÃÃ.33ÃÃÃÃ/ÃÃÃÃ0ˇˇôôÃÃ1ÃÃôôÃÃ2ôôôôÃÃ3ffôôÃÃ433ôôÃÃ5ôôÃÃ6ˇˇffÃÃ7ÃÃffÃÃ8ôôffÃÃ9ffffÃÃ:33ffÃÃ;ffÃÃ<ˇˇ33ÃÃ=ÃÃ33ÃÃ>ôô33ÃÃ?ff33ÃÃ@3333ÃÃA33ÃÃBˇˇÃÃCÃÃÃÃDôôÃÃEffÃÃF33ÃÃGÃÃHˇˇˇˇôôIÃÃˇˇôôJôôˇˇôôKffˇˇôôL33ˇˇôôMˇˇôôNˇˇÃÃôôOÃÃÃÃôôPôôÃÃôôQffÃÃôôR33ÃÃôôSÃÃôôTˇˇôôôôUÃÃôôôôVôôôôôôWffôôôôX33ôôôôYôôôôZˇˇffôô[ÃÃffôô\ôôffôô]ffffôô^33ffôô_ffôô`ˇˇ33ôôaÃÃ33ôôbôô33ôôcff33ôôd3333ôôe33ôôfˇˇôôgÃÃôôhôôôôiffôôj33ôôkôôlˇˇˇˇffmÃÃˇˇffnôôˇˇffoffˇˇffp33ˇˇffqˇˇffrˇˇÃÃffsÃÃÃÃfftôôÃÃffuffÃÃffv33ÃÃffwÃÃffxˇˇôôffyÃÃôôffzôôôôff{ffôôff|33ôôff}ôôff~ˇˇffffÃÃffffÄôôffffÅffffffÇ33ffffÉffffÑˇˇ33ffÖÃÃ33ffÜôô33ffáff33ffà3333ffâ33ff䡡ffãÃÃffåôôffçffffé33ffèffêˇˇˇˇ33ëÃÃˇˇ33íôôˇˇ33ìffˇˇ33î33ˇˇ33ïˇˇ33ñˇˇÃÃ33óÃÃÃÃ33òôôÃÃ33ôffÃÃ33ö33ÃÃ33õÃÃ33úˇˇôô33ùÃÃôô33ûôôôô33üffôô33†33ôô33°ôô33¢ˇˇff33£ÃÃff33§ôôff33•ffff33¶33ff33ßff33®ˇˇ3333©ÃÃ3333™ôô3333´ff3333¨333333≠3333Æˇˇ33ØÃÃ33∞ôô33±ff33≤3333≥33¥ˇˇˇˇµÃÃˇˇ∂ôôˇˇ∑ffˇˇ∏33ˇˇπˇˇ∫ˇˇÃêÃÃÃúôôÃÃΩffÃÃæ33ÃÃøÃÿˇˇôô¡ÃÃôô¬ôôôô√ffôôƒ33ôô≈ôôΔˇˇff«ÃÃff»ôôff…ffff 33ffÀffÃˇˇ33ÕÃÃ33Œôô33œff33–3333—33“ˇˇ”ÃÑôô’ff÷33◊eVxkί+V+˜    ˘+¨◊+˜˘Å◊¨ˆ˘◊¨+ˆ˛+V¨V+˛V¨V+˘ V˜◊¨+˙+ı◊˘    Vˆ◊+˘¨ˆ◊¯ň◊¯    ň◊+˘
  2676. Vˆ◊¨+˙    +ı◊¨˙
  2677. ň◊Å˙
  2678. ˛ˆ◊VV¸
  2679. ˛+¯◊˛+V+˝˝+ÅV++VŞ++¸Î
  2680. d°dONLNdO_8m<*[I°dONLNdP_=mo)ssue 12
  2681. °dONLNdW`olx)2   °dONLNdZ`xl¡)    
  2682. December 1992,Times+,HApple Computer, Inc.(›æ20525 Mariani Avenue+
  2683. Cupertino, CA  95014ˇ(Ú◊#ˇ ˇˇˇˇ#◊ 
  2684. d,     Helvetica
  2685.     .°dONLNdâñî+¥∞E D I T O R I A L  S T A F F, Palatino°dONLNdòñ°⁄*Editor-in-Cheek  °dONLNd.ò⁄°)D
  2686. Caroline Rose°dONLNd<¶ñØı(Ã¥Technical Buckstopper  °dONLNdS¶ıØ))_ Dave Johnson°dONLNd`¥ñΩø(⁄¥
  2687. Our Boss  °dONLNdj¥øΩÚ)) Greg Joswiak°dONLNdw¬ñÀΩ(Ë¥
  2688. His Boss  °dONLNdŬΩÀ)'David Krathwohl°dONLNdë–ñŸ”(ˆ¥Review Board  °dONLNdü–”ŸH)=Pete (“Luke”) Alexander, Neil°dONLNdΩfi¢Á2(¿%Day, C. K. Haun, Jim Reekes, Bryan K.°dONLNd„Ï¢ı3*%(“Beaker”) Ressler, Larry Rosenstein,°dONLNd    ˙¢#*Andy Shebanow, Gregg Williams°dONLNd'ñfi(.¥Managing Editor  °dONLNd8fi)HMonica Meffert°dONLNdGñ(<¥Assistant Managing Editor  °dONLNdbD)pAna Wilczynski°dONLNdq$ñ-Ì(J¥Contributing Editors  °dONLNdá$Ì-8)WLorraine Anderson,°dONLNdö2¢;B(X¿)Geta Carlson, Toni Haskell, Judy Helfand,°dONLNdƒ@¢I*Rebecca Pepper, Rilla Reynolds°dONLNd„NñW∏(t¥    Indexer  °dONLNdÏN∏WÎ)"
  2689. Ira Kleinberg°dONLNd˙iñt"(ê¥A R T  &  P R O D U C T I O N°dONLNdxñÅÏ*Production Manager  °dONLNd,xÏÅ%)VHartley Lesser°dONLNd;ÜñèÃ(¨¥Art Director  °dONLNdIÜÃè)6 Diane Wilcox°dONLNdVîñùÒ(∫¥Technical Illustration  °dONLNdnîÒùJ)[Nurit Arbel, John Ryan°dONLNdÜ¢ñ´≈(»¥ Formatting  °dONLNdí¢≈´
  2690. )/Forbes Mill Press°dONLNd§∞ñπ∫(÷¥
  2691. Printing  °dONLNdÆ∞∫π1)$Wolfer Printing Company, Inc.°dONLNdÃæñ«›(‰¥Film Preparation  °dONLNdfi曫)GAptos Post, Inc.°dONLNdÔÃñ’Δ(Ú¥ Production  °dONLNd˚ÃΔ’)0PrePress Assembly°dONLNd
  2692. ⁄ñ„Õ(¥
  2693. Photography  °dONLNd⁄Õ„B)7Sharon Beals, Lisa Jongewaard°dONLNd8ËñÒ
  2694. (¥Electronic version production°dONLNdXˆ£ˇ+
  2695. In-Yung Kim, Dan Peterson,°dONLNdt£
  2696. *Meredith Best, Cassi Carpenter
  2697. §zA    òÄ>K=%%‡ü¥ˇˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  2698. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  2699. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÓÓÿ››Ÿªª⁄™™€àà‹ww›UUfiDDfl""‡·ÓÓ‚››„ªª‰™™ÂààÊwwÁUUËDDÈ""ÍÎÓÓÏ››ÌªªÓ™™ÔààwwÒUUÚDDÛ""ÙıÓÓÓÓÓÓˆ››››››˜ªªªªªª¯™™™™™™˘àààààà˙wwwwww˚UUUUUU¸DDDDDD˝""""""˛ˇK=§zA    ?=ħz´z§™ÅûÜ•ÄûħzÄ™••Äħz˝´•œ¨Ä§Ä•ħĕ´§z´Ä•™zz§´Ä§z˛§áû™Å§z´•Y?=yÄ•§Ä´Äü™Ä•ĕħ§Äŧ§zÄ´§¸´¸–œÅ™z´§˙§´Ä§z•™Å§Ä•Äûħ¸œ˙§Ä§ÄüÄħL?=ÄûÜü™Å§Ä§Ä•´§á§˙»Å™Äz•§Ä´¸œ¨–ÄÄ•§Ä´•™Å§z´§´Ä§Å•™zÄœ•ĕħ˚§Ä•ÄF?=ħzÄ•§Ä§áû´Ä§Äz´û{ħ§Äz˝´•–±üܧzħŧÄûÄ•™˚§˚§Ä§á§¨•™z§Å§ÄûÄ•F?=Äz§§ÄÄ•z§Ä´z£˚´z£{™Ä§Åœ˝¸–œ˝´§˚üÜûÄz™{™§Ä•zħ´Å§§˝™•ÄÄ•§áûħL?=zz§Å§ÄûÄz§Ä™˙•§Ä´´§–¨Ú¨–Ú¨œ˝–÷¨÷–¸œz§Å™Äüܧ•ÄÄ•§Ä–˚§Ä§ÄÄ•§Å´T?=Äz§Ä§z´§á§•Ĵħz§Ä–´¨––´Û¨–œ˝Ú¨÷–˛÷¸–÷¨§´ÄûÄ•{™§ÅœÄ•™Åz§´Ä•´S?=z™z´z•yħŕ™z§Ä´–¨–Ú˝Ú¸•™•Äz™z§Å™–˝–≤Û–¨§Ä§zħzħ´•˚§Ä§˚ħ•±R?=ħzħÄûáûħÄÄûÄ´˝–œ˝÷•Äz™Å§ÄûÄz§Äzħ˝–Ú˝÷˝§Å§z™zz§´Äz§Ä•ÄûÜ•–3?=Äz§´Ä§zÄûÄÄz§Äœ˝–≤–ÒzÄz§Ä§zħÄz•z§˚Ä•´Û–÷¨´•§á§Äûá§´§˙§•´™˚–?=z§Ü•Äz§´ÄûÄyŧ÷¨–ڕĕĴy§˘§Ä•ħ•áùÄ˚ħĕÛÛ–˝´§¸Ä§zħûÄÄ´§˙§Û˝?=yÅy§zħá§zÄû´˝œ˝–™zzħÄŧħzĕĴ§Äz§Ä•Üû´˝–≤–´§Å§Ä§Å§§Å§Ä§˚–Û?=y˚y§Äz´ÄûÄħ˝–÷–´˚zz§Ä§Ä•ÄyÄûŧĴzħĴz§´˝–≤–´z§Äħ§•ĕĖ´Û–?=yÄz•ħÄÄûħ˝Ú¸–´§ÅħyÄ•zħÄÄ•§Ä•ÄħzħŧyÅ™–˝˛œá•§áûħ§¨´–´–Ä5?=ħĕħĕÄzœ¨Ú¨•Äùá§•˝¨´zy•´≤–ŧħ˚§Üûá§•ÄÄ•´–≤–´•ħÄÄ•§´¨–Äû™Y?=y˚yħzÄz£˚–˝œ¨üÄħ´˝¨–y˚–˝¨œÄĕħÄz§Ä˙§Ä§z´È–Úá•§Äz§zܧzħ´R?=yŧÄz§Ü•zÒ¸––ܕħzÄœ˝˝–ÄÄ•´÷¨–ħ˙§á§zħzÄ´–¨•≤–÷¨£Å§Ä•zħzħÅN?=Äz§ÄzÄ£z•≤–÷•Äz§ÄzÄ–Ú¨–ÄyÄ´–˝–ÄÄûÄÄ•Äz™Ä¶–´˝˝´Û–÷˙§´Ä§˙•™Äz§ÅV?=yŧyÄz™Å–÷¨œ˚yÄÄûÄ´–˝–ÄÄûÜ•Û˝–´Ä•z´ÄûÄÄ•¨–´˝´–˛–´Äz§zÄħzħÅ[?=yÄz§Äŧ´¨–Úz§˘£Åĕڨ–§Ä•ÄÄœ˝–≤–ÄÄûÄŧÄÄûá–÷¸–´˝œ˛÷zÄz§ÄzħŧÄM?=z™zħÄz÷¨÷•zÄûÄz§¨˝§Ä§zy´•≤–˛˝ûÄzħzÄÄ•÷˝–´•≤––≤•£zÄÄ•Äûá§zU?=yz{§Ä´¨œ‡§zÜ•yáûyÄzħÄÄ•§´˝Û–≤•yzħ˙y•Ü––≤–zÄ–≤–Ú¸§zÄz™zyÄûÅO?=zÄħħ˚÷–´zÄyz§Å•Äz§Üzz™•´–˝˝œ¸Äz§ÄħŖ˝œ˚ûĨږ˝÷zÄûÄÄzûá§T?=yÅ•yĨ––´yÄÄz§ÄzÄz§ÄzÄyÄ´•–÷¨–≤§z˚z§Ä•´Äûĕܕ–≤––´Ä´zħ˚•y^?=yzyÄzÄ–÷˝y˚§ÄħÄÄz§Äzy˚§Ä´´–˝÷–¨Äz§Ä´Ä•Äy˚£˙Äz§÷¨–÷¸™Å§Äz§áûÄW?=O§Äy˚§˝œ¸Ä§Ä˚§zÄzy˚z§zÄ´•Û–≤–Û˚yħŧáz§ÄħzÄ•±–˛–´ÄÄ•yÄ•Äyza?=UûÄyz´–≤´•ÄyÄ•Äy•ÜÄû˘yÄz§´´Û–¨÷¨•§ÅħÄzÄÄûÄÄyzÄ–˝œ‡´Äz§§áz§zÄb?=O™zÄz´–÷•ÄÄyzÄz•yÄzÄyŧ´´Ä–˛–≤–¨û˙ħU•ħÄzz™Ä¶Ú¨÷–zÄÄ•™zÄÄ´d?=y˚z§¨–≤z§y˘yyá•§Äz´˝˝œ¨´z™—˝œ≤–˝ÄûÄzÄħÄÅy•ܕĕœ˝Û˝y´Äz§ÄÄz•A?yÄzħ˝–´z˙§zÄÄyz´zy˛Ä§•´Ä—œ˛˝œ≥´§ÅÄz™Äz§z˛Ä§¸––≤–Ä•ŧÄÄz§k?3y˚zÄ–Û´zyzÄyzÄÄz•zz˚§´´•÷–≤–˝¨•zħ˚yÄ•Äz´z´–≤––˛ÄûÄzÄħh?Uû˛Ä8––ÄÄzÄy§˙z§˘Ä•ûÄĸœ¨–Ú˝–≤–˚yħÄzÄyzÄħ˙§¸œ˛÷˝yzÄÄ•yÄÄûd?+yzÄy˚œ˝´UûÄzÄ˙û˘yzÄ•yyÄ˝–Ú¨÷–˝´zyÄzzÄyÄ•z˛Ä–¨–÷–U§˙y´zÄzÄi?=Ä•§´§¨÷•yÄUûÄzUz§˙zz´zÄœ¨–÷˝œ˝•ÄÄzyyÄÄzáyz§Äz´Û–˝´zħy˙z•Äl> Ä…Üü™¨–™zÄyz˝Ä-zz§¯ûÄħ˚–≤œ–˝•ܧ˘zyyÅyÄzz•Ä˝–¨Ú•zÄÄzzz§á\?=Ä…´´•œ≤§ÅyÄyÄ˙ûV§UzzyÄħŜ¨–±•Ä•ÄyÄzzÄzzyÄĕĖ≤––´UûÄÄzyÄ•Äj?%´•´œ•˝Òzá§zÄyÄzUyzÄyzUz§V•œ˝´ÄûÄÄzÄyz˛Äyzħŧ˝÷˝–´ÄħÅÄyÄûáw?=•™zÄy¨–´zÄUzyÄyzUzyÄzÄyÄzÄy´¨§Äzy˚yU§Ä˙§ÄzÄyĕĖ˛Ò˝•ÄÄzyzz˚x?=O•U§¨–áûVyÄzÄħOyÄzÄÄy˚zÄyÄzÄzÄyzÜ•yzUÄy{™U–¨–Ú¨§ÅzÄÄzy§ÅZ?2Uyz™Pœ˝´ÄÄ•Äyz[zÄyzyÄzÄÄy˘§UzzzyÄyV•ÄzÄy˘y•Ä–≤––´˛ÄzyzÄz•k?=U§ÄzÄ•≤œzzÄzzU´•UÄzyzzUzyÄzy\§ÄzzÅÄzsÄzz˚–≤–Ú˙§ÄzÄyŧyÄz9?=UsÄÄz™˝–zzÄz´¨˝´§OÄyVy•ÄÜzyzz˘yUzÄyzÄyÄÄzzy¨Ú–≤–zyUÄzÄûÄÄyV!?=U§UzzÄ–÷ÄzyÄU•¨–≤•˙ù˘yÄOyÄÄyVyzħ˙yÄOÄÄyzÄzyÛ˛–≤´ûÄUz™˘§zUyz?=UzħÄz≤œ•˘yÄyÅÚ–¨•UyUzyÄzUÄyzÄy˙ÄyÄÄzyzÜzÄzy•Û≤–Û–ÄzyÄÄzÄÄzħ?=Uzyy˘¶Ú´t˘y´–˝–ÄUzyUÄzÄyÄy˘§z[zÄ••´˝´zzÅy¨Ú˝–÷¨–˝§zV•zÅ?=UzzyzÜ–˝y˘y•≤–ÚÅyzÄyÄzUÄyzOzÄzz˘œ≤–¨ÄzÄzzá•Ú–˝÷˝–Ú•V§Äzz
  2700. ?6y˙yUy˙–˛§\•–´ÛÄzyz[zsUÄzzy˘ÄÄzzUœ≠œ˝ÄzÄzzÄzÄÄ–˛Ú–˝–˛Äz§\H?=OzÄzUy´–¨¯§zÄÄyzOzÄyÄz[zÄsÄÄzUÄy¨–÷¨§V§ÄÄzz[zyÄÄ•Ù÷˝•ÄħÄÄe?=UyzyÄV{Ú–´UzyÄzUÄÄyV£Py\yyOÄzyUÄzÄ–˝Ú¨§¯§ÄzÄÄyOÄÄ•˝œ≤–z˙§V£u?=UzzUÄzy•≤÷z˙yyVzOÄzyÄUzUyzUzyy˘Ú¨–÷ÅyUzzzy˘yħ˝´–´•ÄzUzzÉ?=UzyUzzÄz´Û¨zÄyz˘yÄPy[zsUÄy˘Äyz´´–¸yÄOÄzyÄUyzÄ•≤œ¨–ÄzÄÄyÄzÄw=3NzUyz[zOyá–÷´zzUyUyzUÄÄzyUsÄUzOÄzUzzÄÄzzÄzUz§≤ ´–¸Äzzz}?'UzyUy¯û[zyÄ–‡´s[zyUzUzyUÄs\yzy\zzz[zyUz˛Äs˘y´–≤œ¨yzUyÄÄzÄzÄq?4UzUyyVyÄOyU´—Ú•Äy\zyz[zyUy˘y˘zUzyUÄt[yÄzz˘y˝œ¸œ¨Äyz˛ÄzzÄzt?=y\sUÄzNÄÄz˘œ¨Û•´UyzÄÄUzÄyÄUzy\zyUÄzyÄz\yy¯§˝œ¨´–UÄyzÄyVyzVÄ?=N˙yUzOzUyUz¨–˛´œ•[zÄzUyUzÄUz˘zzUyz\yzU§¸÷–´´zyÄOÄÄÅ£Vzt[ ?$NzUy˘yUy˘PzĨœ‡œ¨œ¨y[zsUz[zyVzÄUzy˛ÄUü±–¸œÅħUzyÄ˙yÄUzÄzÄ?/NÄVyÄUzyUOyÄOUy˝–Ú˝´–´´••´œ•´•[zÄzVyÄzU§˝´–¨§Uz˛Ä
  2701. zyÄUzÄy˘Äy$?+NOÄy\sUz˘yUOyUz´Û–˝–´Ä´œ¸´–•Üzy˘z\yzU•œ¨´–˛Äy˙zÄzUyzÄUÄzz~?=UOsVTtUįsUyUz´–˝÷˝´sUÄUû¨™˘ÄÄyz\yÄU•–´–˝y[zÄÄzÄyÄz[tVyÄsáÅ?=Us\sUUyUÄy¯yOÄyO¨Ò–˝÷•UUzÄy˘VÄyz\yz¨–´¨œz[zz˙y˘TzÄy¯zsÅ™ÄÜ?=OTzUy˘UyyVyUOy\s´˛–÷˝´y˘UyzÄ[zUzÄOyy≤–•≤œUzyVyĢyyVÄPzħÄÄzÇ?=UÄyVyÄUOÄOyUz\z´–Û˛–´UÄOyÄUzUyUzÄÄ–´–¨§\zyÄUzUyzUzy\yÄÄœVyzUs?=UyVNy˘UyUzNĢyUN¸–÷˛–´UyVUr˜yVyO˚œ¸–ÚÄz˘yUzUOzÄUsUÄz™˙yzy˘yí?=OUyUyVyUOUs[ÄsVy´˝÷–˝´Oy\Ns\yVyU–´–´–\yzUyUzUy˘yÄVyz[…ÄUzUzÄy}?=N˘UyUOy\yUs\zyUO´–˝Ò˝•Uy˘NzT¯yz´–˝œ´OUzUyUs[zUzy\zyÄ•VyzUzOî?=UyVyUUsUOUyUUzOUœ˝–÷˝´Us\sTOU´–¸œ˝§˘UyzUOOÄyU¯yy¯…Ģy¯ÄyzUzã?=NOUzTOUy˘yUUOyUU¶Ú–÷˝¨yUy˘N˘y¨•–¯zUyOUyÄOUzUyUz´yUzyÄ˙ÄÄyVâ?6UOyUUzUy\s\yNVyU¨œ˛–≤–Uy\yOUzT{ÒONVyUOyUzUyUzOU§Äzy\yzU˛Äzy˘Ç?=NVyO[yUOzUNUOyVyá––≤–˝NUyUUsU¯sTOUzUNyVy\zOV–O¯yyVy˙yÄUzUsÜ?9OUNUy¯yUz[sU˘TOy˚–÷˝÷¸yUyOU¯yOUyUyVy¯UyzUÄÄO•UzUÄsUyVyÄOU˛Äê?=UUyO˘x¯UyUOÄNUOU•Ù–≤–´yU¯zUyUOyUUzUÄz[OyVyÄ•VyUzUzTtUVyzUÄÄé?=OUyUUy¯Uy˘TOOyNU¸–≤––´UyˆyzUUyUOUsVOOUUs[…VyUÄOUyz[ÄzÄUzyÄVç?=NON1yOOUy\s[¯sUU´–´Í–±OONz[zUNVyUUsUOÄUO§Äz[sVy[Oy¯yUs˘¯§˘yUç?=NOUUOUNUsUVyUUNO´–˝œ˛¨NOUOTzUUyO\yUs\y¯œ˘NUy¯yUzUsUÄUzy\zÄUyÄñ
  2702. d°dONLNdî-\6È(Sz"The stone jigsaw puzzle was pieced°dONLNd∑9\Bfl*  together by Hal Rucker of Rucker°dONLNdÿE\N›*  Huggins using Adobe Illustrator,°dONLNd˘Q\ZÚ* #FontMonger, Ray Dream Designer 2.0,°dONLNd]\fµ* and Adobe Photoshop.°dONLNd2x\ÅÔ*%develop, The Apple Technical Journal,°dONLNdWxÔŎ)ì is a°dONLNd]Ñ\çı(™z&quarterly publication of the Developer°dONLNdÑê\ô * Support Information  group.°dONLNd†´\¥m*The °dONLNd§´m¥æ)Developer CD Series°dONLNd∑´æ¥fi)Q     disc for°dONLNd¡∑\¿Ê(›zNovember/December 1992 or later°dONLNd·√\ø* *contains this issue and all back issues of°dONLNd œ\ÿz* develop°dONLNdœzÿÈ) along with the code that the°dONLNd1€\‰≤(zarticles describe. The °dONLNdH€≤‰“)Vdevelop °dONLNdP€“‰˚) 
  2703. issues and°dONLNd[Á\Ò(
  2704. z$code are also available on AppleLink°dONLNdÄÛ\¸˙* 'and via anonymous ftp on ftp.apple.com.
  2705. 4*p,6 s9s/ˇ◊#ˇ ˇˇˇˇ#◊ 
  2706. d,     Helvetica
  2707. .°dONLNd"2)+<ME°dONLNd",28)D°dONLNd";2?)I°dONLNd"B2J)T°dONLNd"M2Z) O°dONLNd"]2i)R°dONLNd"l2p)I°dONLNd"s2~)A°dONLNd"Å2ä)L, Palatino
  2708. °dONLNd
  2709. %ü1()Playing the postdating game   
  2710.     °dONLNd(&(1.)â2
  2711. °dONLNd+C1S:(nOL°dONLNd,C=SH) E°dONLNd-CKSS)T°dONLNd.CVS^) T°dONLNd/CaSl) E°dONLNd0CoS{)R°dONLNd1C~Sä)S
  2712. °dONLNd3FüRÙ)!CDs lost in space.   
  2713.     °dONLNdHGÙR˙)U4
  2714. °dONLNdKd&t1(èDA°dONLNdLd4t@)R°dONLNdMdCtK)T°dONLNdNdNtR) I°dONLNdOdUta)C°dONLNdPddtm)L°dONLNdQdpt{) E°dONLNdRd~tä)S
  2715. °dONLNdTgüsæ)!1Techniques for Writing and Debugging Components  
  2716.     °dONLNdÖhæsÂ(è‹by Gary°dONLNdçuüÄ"(úΩWoodcock and Casey King
  2717. °dONLNd§t"Ä+)É   °dONLNdßt+Ä)    0Components aren’t just for QuickTime programmers°dONLNdÿÅüçœ(©Ω anymore.   
  2718.     °dONLNd„Çœç’)07
  2719. °dONLNdÁûü™Å(ΔΩ(Time Bases: The Heartbeat of QuickTime  
  2720.     °dONLNdüÅ™È)‚by Guillermo A. Ortiz
  2721. °dONLNd'´ü∑    (”ΩMUnderstanding and manipulating time bases directly is sometimes helpful. Here°dONLNdu∏üƒ„*
  2722. are some tips.   
  2723.     °dONLNdÜπ„ƒÔ)D41
  2724. °dONLNdã’ü·ï(˝Ω+Better Apple Event Coding Through Objects  
  2725.     °dONLNd∂÷ï·)ˆby Eric M. Berdahl
  2726. °dONLNdÀ‚üÓ(
  2727. ΩLAdding Object Model support to your existing OOP code may be easier than you°dONLNdÔü˚¬*
  2728.     think.   
  2729.     °dONLNd!¬˚Œ)#58
  2730. °dONLNd& üÁ(4Ω;Another Take on Globals in Standalone Code  by Keith Rollin
  2731.     °dONLNda
  2732. Á(4   
  2733. °dONLNdd ˇ)    For°dONLNdhü%(AΩMMPW users, here’s an alternative way to implement globals in standalone code.
  2734.     °dONLNd∏'ü2´*
  2735. 89
  2736. °dONLNdºD'T3(oEC°dONLNdΩD6TC)O°dONLNdæDFTO)L°dONLNdøDRT]) U°dONLNd¿D`Tm)M°dONLNd¡DpT{)N°dONLNd¬D~Tä)S
  2737. °dONLNdƒGüS—)!3Be Our Guest: Components and C++ Classes Compared  
  2738.     °dONLNd˜H—S¸(oÔby David°dONLNdUü`“(|Ω
  2739. Van Brink 
  2740. °dONLNd T“`ÿ)3  °dONLNd
  2741. Tÿ`Ù)=Components and C++ classes have some surface similarities but°dONLNdKaümM(âΩ(underneath are very different beasts.   
  2742.     °dONLNdsbMmY)Æ37
  2743. °dONLNdx~üä(¶Ω+Graphical Truffles: Animation at a Glance  
  2744.     °dONLNd£ä√)‡
  2745. by Edgar Lee 
  2746. °dONLNd∞~√ä…)D  °dONLNd≤~…ä˝) Three basic°dONLNdæãüóä(≥Ω3animation techniques everyone should know about.   
  2747.     °dONLNdÒåäóñ)Î53
  2748. °dONLNdˆ®ü¥ä(–Ω+Print Hints: Top 10 Printing Misdemeanors  
  2749.     °dONLNd!©ä¥)Îby Pete (“Luke”) Alexander
  2750. °dONLNd>µü¡∞(›Ω?You know the felonies, now learn the lesser printing crimes.   
  2751.     °dONLNd}∂∞¡º(›Œ84
  2752. °dONLNdÇ“üfix(˙Ω%KON & BAL’s Puzzle Page: A Micro Bug 
  2753.     °dONLNdß”xfi¸)Ÿ by Konstantin Othmer and°dONLNd¡‡üÎ⁄(Ω Bruce Leak 
  2754. °dONLNdÃfl⁄·);  °dONLNdŒfl‡ÎÛ)=Remember that little built-in debugger that no one ever uses?°dONLNd
  2755. Ïü¯‘(Ω
  2756. People do.   
  2757.     °dONLNdÌ‘¯Ê)5134
  2758. °dONLNd
  2759. S`(5qQ°dONLNd 
  2760. cg) °dONLNd!
  2761. ju)&°dONLNd"
  2762. x|) °dONLNd#
  2763. ä)A
  2764. °dONLNd%
  2765. ü) Macintosh Q & A   °dONLNd7
  2766. ˝)b5Apple’s Developer Support Center answers your product°dONLNdmü&(BΩdevelopment questions.   
  2767.     °dONLNdÜ& )o120
  2768. °dONLNdã8MHQ(ckI°dONLNdå8TH_)N°dONLNdç8bHn)D°dONLNdé8qH|)E°dONLNdè8Hä)X
  2769.     °dONLNdë<üG±) 138 w4w, New York
  2770. (z 
  2771. +
  2772. 1
  2773. (éª0© 1992 Apple Computer, Inc. All rights reserved.*gApple, the Apple logo, APDA, AppleLink, AppleTalk, ImageWriter, LaserWriter, MacApp, Macintosh, MacTCP,*    jMPW, MultiFinder, SADE, and StyleWriter are trademarks of Apple Computer, Inc., registered in the U.S. and*    fother countries. develop, Finder, Macintosh Quadra, MacroMaker, PowerBook, QuickDraw, QuickTime, Sound*    iManager, and System 7 are trademarks of Apple Computer, Inc. PostScript and Adobe are trademarks of Adobe*    nSystems Incorporated, which may be registered in certain jurisdictions. HyperCard is a registered trademark of*    lClaris Corporation. NuBus is a trademark of Texas Instruments. UNIX is a registered trademark of UNIX System*    TLaboratories, Inc. All other trademarks are the property of their respective owners.(Ú‹
  2774. CONTENTS  
  2775. )*
  2776. December 1992ˇ4Ê◊#ˇ ˇˇˇˇ#◊ 
  2777. d,     Helvetica
  2778. .°dONLNd9'ç+WB    EDITORIAL
  2779. ú3,´òÄ<êxHHëú¢ˇˇˇˇˇˇÓÓÓÓÓÓ››››››ÃÃÃÃÃꪪªªª™™™™™™ôôôôôôààààààwwwwww    ffffff
  2780. UUUUUU DDDDDD 333333
  2781. """"""êxú3,´#3˘2"˛2"2"2"2¯"˛2""˙!"˛!"Ù!"".˙#"#˜"˛""˛"#˛"˛˝
  2782. "˛"ı2"2˝"!˜"2˝"!!¸!""¯!!!"!" ˚#"#¯"""¸˚"˛¸¸˘˛"(˛3˜2"2˛"2˚"!""2"2˛"˘!"!"!"˛!"˚!""$3˘#"#˘"˛"¯"˛˘˛˝#332323˚2˛"2""2Ú"¯!"˝!¸!"˛!",33##"˛#""#¯"˝"""˛"˝˛˝˙˛)C3C33˛2323˘2!˚"˛2"2""!""˘!""¯!"!"")34˛3˝#"#ı"˝"#˝"˛˘˛'CDCC33˙2"˝2˙"2"˛2"2!"ı!!˝!¸!"'34˝3˝#¯"#¸"˛#˛"˛˛˘˛"'CCD˛C˛3˝2"˛2"˚2
  2783. 323DC32"2""¯!"Ù!"",3˝433#3˛#""#"#"˛# 33#VfgfeC3""Ò˝˛%CDCD˛C3˜23DTUDEàwàôñT322˛"Ô!˝!".3¸4˛3˛#""˝#4WxààââäôöôáT3""¸˝¸˚"-DDCCD˝C33¸2
  2784. 3Dgàôô™ª∫´ª˛™ñS3˝"˙!"˛!"˜!"0˙4˝3##"##4Vxxâõºº™´ºº´ºπu3˛"¸˛˛˝)˘C˙3Dgàòöº™ªÀ´Õ›‹Ì€∫©t2˝"˜!""˛!!!!"-34˜3#33Fòôâ≠Ωª∫õÃªΩ›fiÀ™áàC""ˆ˛3˛C3C3C3C3C˛3Uz©àö€›ªπº‹ª´›Ì‹€©àc32"!"˚!˝"!"˙!""-˙3##˛34Ew™àâ´ª⁄Ã∫Ω‹´´ÕΩ‹Õ€ò¶3""˝˜¸4CC˛3C˚34Uxπ™ª∫ÀÃ̪̀ªÀ‹‹€ÃÌò∫tC""˙!"!˝"˛!˛!"93433#˛3!#33#3gä´ÀÀ™ªΩ›´º™æÕ‹À´¨fiòº∫c""¸"˝˝1˛C3C˙3Dwª‹›€∫™ÕÌ…™öÕ›ª∫òõfiªÀ‹ï2""˛!"!˙"!"˚!"344¸3#3#34FäæÕfiÃ∫´º›ô´≠Ω› wVfúº›Ω C"˘˝"˛,˛C˘3DV´‹ÌÌÀ Ãº›∏ôºÃ€∑uUf{ª›€ c2¸!¯"˛!˛!"834˝3#3##3FW™ú›Õê ¨Ωπö˛™    vD4Eh¨›ÕÃÑ˛"˝"""˛˛˛"3¸C$33C33DehòΩÌ›‹À… ¨…óxòádCDTf¨‹‹Ã•B2"!!¸"2¸"¸!""24˘3#5UX䨛պ©{∫€ªwVUD334EF¨ÃÕîS"¸"¸"˝3˘C33Dey∫ºÌ€™á´º€ªáTTCC3DDVãËÅt2"¸!""2"2""˝!˛"533#334˛34EV™ÀΩ›À™™öΩÃÕªuD#334DFh¨Ã›ÀñB"¸˚"˛˝"533˚C34UWª‹ΩÌ€™©´Ã€›ÏΔD˛3 CDUg´‹Ì⁄∏b""˛!""¸2""˛!˝"5¸34434DgzõÕÆ‹Ãö´´∫ߌΪT˛3 4DEV{ΩÃÙÜ""˛˝"#"#""˚":˛3C3˛C"DDWô´ºÕ⁄À∫ª∫∫ÜÕÎÀTCC3DDTVx›ÏÃ∫Ü2""!˝"2"22˛"!˝"2/¸3#433EDHòöΩΩª™º´¨©gΩÀ∫T3#34DDEWÕ€ª´ñ2"˝˙"˙",˛3˝C DETh©™Õ›π©∫»àááÕŸ∏SC33CDDUf≠π™ª∑2¸"˚2¯"63#˛3˛4UDXäõÃŒòyáúò䙺xï˛3 434DFyù®®å∑2"˛˝"#˚"˛""3˛3˛CDDeUx´´‹ÕπwwâÕÀ …wÑC˛3 CDDh®õ ®ã®c2˚"2"˛2˙"23*33443445EWy™¨Õº™vgfVxöòyT##344DG©Ujºâö¶e"Ù"""433CC˝D%Vwô∫ªÃÃπÜwueä™´®S33CDDTiñVy‹ô∫…cB2"!2"¯2˝"2933˝4DEXöªºÀ´Õ∫wgxwx¨ª¶43˛4DGáàx®≠Àª´•D""˝"#"#"#¸"";C3˛C$DDUWÕ‹ π´›»wá®Üôº ÖDCTDCDWö¨y∏}‹‹…ôv2˛"2"¸23˛2"2""/˛3˛4#DEWÕÃÀ™º≠‹wáâ{㨮eVxáeC3IÜgfVY›‹∫™Ö2¯"˛#˚"933CDCDDUgÕ› ™™›Ì∑Üòöª€ßܲwuC3WuUeUVÌ‹∫ ÖB2"2"2"˝2˛3˝2"333˝4#DEXΩ›∫©â¨‹´wàä¨∫weEháeD#6ffT4FÕ ´ºTC˚"#"˚#˝":˛C(DCDDTgºÓ‹ôÜõ π∑áàª∏ñTFóátC3EeDC3EúÕÕÏÑB22˛"2"22¸32""2533˛4$DEWiúfi›ªââäâªßázòuF´ÑVD344U334E|ÃΩÕdB˙"˝#3#3˝"7CDC˛D#UhäúÓÌ‹«òàöÀ∏∑òáukáefdCTDUTCDEl››‹uB˛2"2"22˙3˛24¸4%DEg´ºÕ›À™ªàä´∫´äßUeDDe34ED6UD4ElÕÕÃe33¸"˝#˛3##˛":CDC˛D$Tx´À›⁄ºÀàöºπô ππeTEeS3DUSEfeTU|›‹€ÜTT˛2"˝233CC3˝23¸4DEi¨ÃÃÀ´¨∏yôáãàö®S¸34ED4VvUV|Õ›ÀvUD˚"˛#3443#˛"<DCC˛D%föª›‹€ ªÃxö™ªv∫∑S2233CDUdCVxvgõÕ›‹óuDC˛2"2"33˝C322":D˛4DEHàã€fi›…™™âäöòjówC˛#34UVT3FgxxãÃÕ€∑eD4#¸"##˛433˛"8¸D&UgvãÛÓÙ´…àâ©ÍváTD233VfUeTVáxàz‹ ÀÀñUd˝2""33CDCC3˛29¸D(EVwzºΩfiº´´ªòöº©áóUD334WVVfUWwxWkÕºª™àfD3#˝"    #33443##"";TD˝T-VwâÕÛº‹ÀÀ∫©™©´«eTDDEuUwàáààóglÃÃÀπÜdCC22"2233˛DCC˛2:˛D,4DDEWyÕ€ÕÀ‹⁄ªπz´™¨∑fUUDFTEEhã™ΩfV]›Õª∫áD33##"˝#44D43˛#:-TDDTDTUfz››Ã ›º‹Ãª›Ï∫®fveUwdTTUwπ∫uv≠‹ÀàÖTCC3˝2˛3DDCC˛2:¸D%EUgj››Õ ÕÃÕÀºÕ ¨®fwffwUEVfxwjeVfi‹´ºπvD˛3##"˛#344˛3""<TDTDTUgá|Ã̛̺››‹ÃÃπ›∏e˛wvâóuTD4YvfÌκÀ∫ÖTCC33˛233CDDCC˛2:˝D)Ewwy¨º›fifiÕ›ÃÃÀº º»eUfWlµeC3#$ôf{›ªΩº…uDD33˛#"##3˛43˛#=T˛D7Thô∫ÃÛ›fiÌfiÌ››Ã€À»uUeUeßuCC2Gàvé‹ÀºÃ™ÖTDC332"2233CCDC3228˛D*4DVõ™¨Õ‹ÕŒÓÓfiÕŒ›Ã›ÀeDEDDFfVEgwófé›ÃúªuD433˙#34433##<TDTDUg䪪ÀÛ›fiÓÌÌ›Óϛ̶e˝TgvUfxwvΩ›‹€ÀÀÜTDCC3232˛3CDCC3328˝DEWz™ººÕÕΩ›flÕ›Õfi›ΩÓπe˝DF˛gffW՛úΩÀáUDD33¸#33˛43##;#TTDTEV©πªÃ›› ª‹Ì ö‹›ÌÓÎódUDTUTTUeffÌ˛‹À€ßdTCC33˛2323˛C˛39˝D-EWwö≠›ÕÀÃÕ∫¨ò´∫º€Ó›©fEDEEDDEEVY›ÀºÃÕÀ∑TD443##"˛#344˝38¸TVóöõÕ›Œ›‹Ãπö´´ÃÃ˛Ì€áTd˝TDTVjÌÓÌÓÏÃ∏eTTC˛32˝3D˛C335˛D+EEVwôõÃÕ››ŒÕ ´ÕºÃÆÓÃÃπvFDEDD4EVlfi‹ÕÓ›ª∫eDD33˙#˛4˛33¸TVà∫¨‹˛Ì‹‹›˝‹ΩÓ€ªÀóeeTTDDegΩÌÕ›ÌÏÃÀuTDC˝3232˙C:E˛D EVy™´ΩÕfifiÛ›Õ˛›Ωfl∫ö´πfVEEDEfYfifiÃfi›ÕÃ…fDD˛3¸#344˛34:˛T+DUW©ÀÀ̛ӛÛ›‹ÌÏÌ‹fl…áàôπ®àvvw™ÃÔÓÓÌ›‹ÀŸeTTDC¸3CCDD˛CD8˝D*EXõ¨››Œ›ŒÃÕfiÃÕ›Õ‹›…gxxôöôôâö¨ΩÓfl›Õ›∫Ã∏fDE44˝3#¸4344;TU˛T
  2785. gºÃÕ›ÌÌ››ΩÌ˛›€∫›ÿvfwáâö™™∫ªº˛ˇÓÌ‹ÀÀ…uTTDCC¸3CDD˛CD:"EEDDEYÕú‹Õ›‹fi››ÕÕº¨ªºπvUfggxââö´ºÔ˛Ó ÕÃ∫xeDD˝3#33¸434<U˛TUiÕÌÃÎΩÓ›Ì˛ÌÌ‹‹ÀºÃŸÜUUv˛wàôªº˛˛ÓÏ΋̟ÜeTDTC˝3CC˛DCCD8U˝E0YÆ›Ω€ΩŒÓ›ÓfiÓÕ›ÃÕàvUDffggwy´¨ÔÓÓ›Õfi›«fUEDD4433#33˚4<1TUTUTf∫ÓÀÓÃÓÌÓÓ˛fiÓÌÓÌ‹ÀÜTTDVefgàö¨˛ÓÏ€‹ÓÓÌ‹∑eTDD3C˛3CCDC˛D6U˝EWzÕÃæŒŒfififlÓ›fififlfi›Õ∑U˛DEVfgäúŒ›fi‹ºÓfiÓ›ÃÀeDD¸3˚4D8˛U#TUf´›ÏŒ››ÓÓÔÏ›ÓÌÓ˛›Ì«eDTTUUfwô´ÓÌÓ‹Ã˛Ó Ì‹Ã∏eTDCC3CC˚D<U˛EUV䌛ŒŒfi˛›! Õ››fifi›fiÿUEDDEEVgâõÕÓÓ‹ÃÕfifi›Ãê∫TD˝4344DDED;UUTUUfäÌ‹Ófi̛̛‹˛›ÏÓÌÌÿeTDDTUUgâ´Ã˛Ì›‹fiÌÌ›˛ÀtD˝CDC˝DT<UUEEUW|›fiŒfiŒÔ˛fifi›fiÕŒÔÔ› d˛DEUVgàõ´ŒÓÌ›ÀÕŒ›Ãººª≈DD˛4˛DEDDE8˛UTUVå›Ì›Ó›ˇˇ˛Ó››ÌÌÓ˛ÓÈd˛DUUfáw™öΩÌ˝ÓÏÓÓÌ‹˛Ã…TT˝D˝TˇU6UEUEUW´ÕŒ˛Ó flÌÓÓÕfiÓfi›fi›óUD4DEUWfgôâòŒÓÓfifiÓ›ÃÃ˛º∂¸D˚E:˝UTgõÕÓ˛Ì˝Ó"Ì›˛Ớ̀ÖTDCDDUefg®àà¨ÓÓÌÓÓ›‹ÃÃÀÃ∫e˛TUTUUTUU8EU˛EgõÕfiflÓÓfi›fiÕfiÔ›‹Õ∫vUD˝4EEUWàxwxãŒfi››ÃÃ˛ºê∑˙EUEE6¸UföÕfiÓ˛˛Ó›Ï‹ÌÓ›ÀÀÜeT˝DTTUUgàávww≠Ì››‹À˛Ã˛Àu˝Uee˛U/¸U!FiºÕŒÓ›fi›fifiΩºª©®UD44344EDEEgxgVVgΩ˛Õ˙ºöE˘U6Ue˛UVw©∫ÌÓÌ›ÌÓ˛Ì›‹‹®eDCC˛DUTTUfàuef{ËËÀ˛ÃÀ‹ÃÃΔ¯e9˝UEEVxãfi›ÓÕflfifiÓÓÌfi€eD3˛4D˛EVewfUf˝Ãª˝ºªººÕßf˛VUVUUV5eUe˝Ufy›Ó˛˛Ó˛ÌÓÓ˛ÓÓ«d˛CDDTTUUewfVãˋê˙ÃÕÀ˚feff6EEUEU˛EV}Ófi›Õ›Õ‹ÕflÔ˛ÕÃπv˛DEEUVVggú˛ºÃúº˛ÃººÃÕº¯f:eeUeUUTUU{‹›ÃˋË›ÓÌ‹‹ÃÀπuU˛efvöª˛Ã
  2786. ‹ÃÀÃÀÀËÀÃÀ‹ÃÜ˚vff8UV˝U˛EiÕÃÃ˛ºÃ˛º ÕÕÃúúÕúºÕÃ˝ºÃ…‹¸º
  2787. ÃÃΩÃÃΩ«ggwg˛fg<ef˛eUeUUl‹‹˛Ã
  2788. ÀÃÃÀÀË‹Ã‹Ã˛‹Ë˝ÃÀÃÀ‹ÀÃÀÀÃËÃÕ‹€› wwá˛wvw2fVUVVUUEUlÕÕúê˚º˛ÃÕÃÃÕÃúÕÃ˛ºÃ긺ÕºΩ‹‹ÕÃá˙w5ff¸eUUÕ›‹À˛Ã˙ÀËË‹ÃËË‹ÀÃÃÀªÀÀ˛Ã‹ÃÃÕ‹€Ã‹∑˝áwwá7f˛V˝UV˛ÕúÕúºªºªº´ºªÃÃÕÕ˙úªººª˛º
  2789. ÃΩÃÕÕÃÕª∫xw˛xwx2˛f˝e UfÕ››€ÀÃÎÀÀÃøÀÃ˛‹›‹›˛‹˙À
  2790. ÃÀËÃÕfiÀ›ÃÀ˝àáàá4fVfVfVVUV›ÕՋúÕÃ˛ºÃ˘ºÃ˝º    ªºªºªººÀú˛ÃºÕºÃººôâ¸à8efefeffef›‹ÀÕ‹ÀÃÏ€À‹˚ÀÃÀÃÃÀÃ˝ÀÃÀÃ˝À‹‹ÀÃÏÃÀÃÃ…òôòôòò2˛Vf˝V    YՋúΩêΩÃ˛ºúÃ˚ºúªªºÃ˝º˛ª
  2791. ººÕÃ˺ºÕÀΩ˚ô5v¸feek››˛Ã›ÀÃÌÀ˛Ã‹À˙ËÃÀÀ˝ÃÀ˝Ã›‹€ÃÏÃˋé©™©©ô5fV¸fVl›ÕÃ˛ºÃºÕúÃúª¸ºÕÃ˝ºªÃ˚ºÃÕ›ÃËΩúÃÃ∫ö™™öö3˘fl˛‹˛À
  2792. Õ€‹ÏºÃ‹ÀÀÃÀ¸ÃÀÃÃÀÀ«‹ÃÀÀÃÀÃÛÃË‹ÀÃË ∫∫˛™6˙f Vm›ÃúºªºÃºÕ˛Ãºªª˛º˛ÃººÃ˛ºÃºÃ˝ºª›Ã˲ºÃú´´™ö´/v¸fvv|››€‹˛ÀˋϯÃÀ‹˘Ã˛ÀÃÃ˛‹ËËËÃÕ˛ª∫∫7˙fg}Õ›ÃêªÃºÃÕÕººÃººÃ˛ºúºÃºÃ˛ºúºÃ˛ºÕ‹˝ÃºÃºΩÀª´ª´0˛fvf˛v}››‹¸À
  2793. Õ‹›ÃÀÀÀ‹ÃÃÀÃÀ˙Ã˚ÀÃՋË˲ÃÕÀ˝ª6¸fgff}Õ›Õê˛ºÃÃÕ€Ã˛º˛Ã¸ºÃ˛ºÀºÃººª˛º‹˛ÃºÃººÕÃ˛ª´8˝v wvvwç›ÌÛ‹ÀÀø‹›‹ÃÃÀË˛Ã€˛Ã‹˛ÃÀ˛Ã‹ÃÌÃ˛‹˛Ã‹Ã€ÃÀÀ<ffgf˝g}Õ›Ã՛êÕÃÕÃŒΩÕ˛ÃººÃÃ˛ºÃÃ˛º úºªººÃÃŒÃÕú˛Ã‹Ω˛Ãª3¸v˛wú››‹‹Ã‹‹À˛‹Õ˛‹˲ÃÀÀÃÀ˙ÃÀ¸Ã
  2794. ՋՋËÃËÃË‹€5˘gç˛ÕúºÕ˝ÃÕÃÕպúÃÃ˛º
  2795. úºÃººÃººÃÃ˛ºΩ›˛ÕúºÃÃÕ˛Ã6wwv˛wáwù˛›ÕÃø‹
  2796. ›Ï‹‹Ã‹Ã‹‹º‹˝Ã‹˛ÃÀÃ˲Ëϛ‹‹˙Ë‹; wgwwgwgwùÕ››˛Ã
  2797. ÕÕÃú՛ÕúÀ˛Ã˛ºúº˛ÃººÃºÃºÃºÃ˛ÕÃÕú˝ÃÕÕ6˚wáwùÛ›‹˛Ã˛ÀÃÕÌÕ˛‹ÀÃÃÀÀÃÀ˛ÃÀÃËÀ¸Ã‹fi›˛‹{ÃËÛ‹›;wwgg˝w≠ÕÕ›ÃÃ˛ºÕ˛Ã›ÕÕÃúÀººªºªººÃºÕÃú˝ÃºÃÕÕÃÃ∂6ºÃªªÃÃÕ;áwáw˝áΩ‹››˛‹››‹ÌÏ‹fi˛‹˲ÃÀ˛ÃÀÃË‹˛Ã‹Ã˝‹ Ì››SEÀÜUÛ‹6˚wxw≠ÕÕ›ÕÃÕ›ÃÃÕÓÕ›‹››ºÃº˛Ã˝º˛ÃÕÃÃÕÃÃÕÃÃÕ›Õ…THªvT4ΩÃÕ4˘áΩ›‹››Ï˛Ã
  2798. ÕÌ‘MÔÏÌ‹ÃÀËÀ˚ËËËÀËË‹›‹«el≈TUW€‹‹5˛wxw˛xÕ›Õ՛úúÕÕ≈GŒ››Ãºº˛ÃººÃ˝º˘ÃºÃÕÕ›áVäeDE|uÃÕ8˝áàáàà‹˛›‹Ã‹ÃÀÃ÷V‹˝›‹Ã‹Ã‹ÃÃÀ¸Ã‹›˝‹ËË‹›ÍvxuCV{ï4¨À4ww˝xàx˛›Õ˛ÃºÃºº«Vú›Õ˚Ã˛ºú˛ÃÕÕ˝Ã¸Õ
  2799. ◊VgT4G∂EEºº2˛áàá˛à‹ÏË˝Ã€˛Àv}››˝‹˙˸Ã‹Ã˛‹˛›
  2800. ÜVeCDßTDlÀÃ7wxx˛àxâÃÕÃúºÃfiúºÃwh›Œ˛Ãպúº˙úÃÃÕÃÃ˝›eGT4GT4D˛º6á˛à˛òô‹›˛‹ ÃÃTVxªÀ÷fÕ››˝‹ÃÃÀ˚Ã˝‹›‹‹˛Ì ÎÜgTVeTES\ÃÃ;xx¸àyÃÕ›Ã˛º35Fh´ΔE~fi›ÃÕÃúúúº˛ÃÕÃÕÃÕÃÕÓfi›€uwUgU5UD|ú9á˛àòòàò‹Ã‹‹˛Ãu˛TVxeZfi˝‹˝ÃÀÃË˝Ã‹›‹‹›˛ÌÌÈuÜUvTVdEÏÃÃ7w˛x˝àÃÃÕ˛Ã ºŸDUDDVeVŒÕÕ˚úú˝Ãº˛ÃÕŒÓfifiÈfvFfUfDCŒfi›9ááàà˝ò‹‹›‹Ã˛̅dCDVvÕ››˝‹˝Ã‹Ã˛‹Ë‹›‹fi˛ÓÓÿguVuVTD´Ã‹Ã;wxxyàâàâ‹ÃÕÃΩººΩÕ›ÑDDFvmÕ›Ì˛ÃÕ˝ºÃÕÃÕŒÕÃÕÕ˝Ó ∏gffUVTEººÃÃ8˛á
  2801. àòàòô¨‹›‹À‹˛Ã‹Ã«eTgl››˛‹¸Ã˛‹››Ì››‹›Ì˛ÌÌówevfwe|‹‹ÀÃ;w˛xà˛âå˛ÕÃúºÃúŒÖDGzÕ›ÃÕ¸ÃÕÕÃÕ›fifi›˛ÕflÔÓfiáfVfVhò¨ÃÕÕÃ6àá˛à˛ô¨‹››˛‹
  2802. ÀÃÀÀ∏ÜUUx››˙‹˛›ÌÌÓ›˛‹
  2803. ›Ó˛˛ÍáfvväªÃÀÃ˛‹< ààxàââôâúÃÕÕ˛Ã ÕîvVVfUi›Õ›˛Õ
  2804. ›ÃÕ››Õfifi››ÕÕ›Õ˛Ó⁄ággäª˝ºÃÕÃ:òòàòò˛ô¨‹‹›‹Ã∏uUTCCEffVõ˝›    Ì‹Ì‹Ì››ÌÌÏ˝‹
  2805. fiˇÓˇ…óvyÏËÃÃÀ˛‹:˝à
  2806. âôâôõ‹ÃÕûS˛D
  2807. 44EVVfx›Õ›fi˛›ÕfiÕÕfi››˛ÕŒfiÓfifl⁄ôvKúÃÕê˛Õ;˛òà˝ô´‹››‹»TUeUUgvUUfxú˛Ìӛ̛ÌÌfiÌ›‹›‹›fiˇ˛ÌÓÈπ´ÃÃ˛‹À‹Ã‹‹9àà˛âôôöú›ÕÕÃΩàwâ™öúwfUVfz¸fi››fi›fifi›˝ÕÔÓÓ›ÕÀ˛ºÃÕÕ˝ÃÕÕ9òôôò˛ô©¨Ì‹›‹ÃÓ›‹‹Ã‹‹ñuTfWÕÓÓ˛Ì›ÓÌÓÌ˛›Õ›˛˛Ì‹˛Ã‹Ã˙‹Û6˝â˛ô    öùfiÕÕÃÃÕú˛ÃºfieEFgèfifi›fiÌÕÓ›fi››ÕÕ›fiÔÓÃÃ˛º˝Ã˝ÕÃÃÕ
  2808. d
  2809. °dONLNd
  2810. "m(>,
  2811. CAROLINE ROSE, Palatino°dONLNd~ñä◊(¶¥
  2812. Dear Readers,°dONLNd&ññ¢¯*IThe more observant among you may have noticed that we’ve made yet another°dONLNdp¢ñÆ√*
  2813. change to °dONLNdz¢√ÆÍ)-develop °dONLNdÇ¢ÍÆ)'=with respect to how it’s dated. The last change happened with°dONLNd¿Æñ∫ (÷¥RIssue 10, when we stopped designating issues with the current season and went back°dONLNd∫ñΔ* Sto using the current month, because the season isn’t the same around the world. Now°dONLNdgΔñ“¯* Hwe’ve  moved the date ahead by one month — also to accommodate worldwide°dONLNd∞“ñfiœ*
  2814. distribution.°dONLNdæÍñˆq*2For the terminally curious, here are the details: °dONLNdÍqˆ≠)€ Apple Direct°dONLNd¸Í≠ˆ¯)<, our vanguard of°dONLNdˆñ
  2815. (¥Tinformation for business and technical decison makers, doesn’t reach other countries°dONLNdcñ
  2816. * Vuntil two to eight weeks after it’s distributed in the U.S.; it might, for example, be°dONLNd∫ñˇ* Pfolded into a local mailing whose schedule doesn’t coincide. So by the time some°dONLNd ñ&* non-U.S. developers see °dONLNd#&?)m Apple Direct°dONLNd/?&¸)<+, they think they’ve been sent a past issue°dONLNd[&ñ2(N¥Vrather than the latest one. To help convey to them that it is indeed the latest issue,°dONLNd≤2ñ>Ã* Fit’s now dated with a month that’s closer to when they’ll see it. The °dONLNd¯2Ã>
  2817. (ZÍ Developer CD°dONLNd>ñJ¥(f¥Series °dONLNd >¥JÀ)disc, °dONLNd>ÀJ) Apple Direct°dONLNd>J)<, and °dONLNd$>JF)develop °dONLNd,>FJ
  2818. )'.all need to be in sync — so there you have it.°dONLNd[JñV5(r¥"What is now the December issue of °dONLNd}J5VZ)üdevelop°dONLNdÑJZV
  2819. )%' was the Autumn issue last year and the°dONLNd¨Vñb˜(~¥NOctober issue in 1990 (when our production cycle was a month out of phase from°dONLNd˚bñn* Swhere it is now). Anyway, we hope those of you in the U.S. agree there’s no harm in°dONLNdOnñz* a little time travel forward.°dONLNdmÜñí *QA little time travel forward would be really handy for me while I’m writing these°dONLNdøíñû≠* >editorials, because I don’t always know what the state of the °dONLNd˝í≠û“(∫Àdevelop°dONLNdí“û¯)%-related°dONLNd
  2820. ûñ™(Δ¥Qworld will be two months in advance (that’s the lag time before you actually read°dONLNd_™ñ∂¥* Ethis). In Issue 11’s editorial, for example, I couldn’t alert you to °dONLNd§™¥∂Ÿ(““develop°dONLNd´™Ÿ∂
  2821. )%
  2822. ’s being in a°dONLNdπ∂ñ¬È(fi¥new format on the °dONLNdÀ∂ȬH)SDeveloper CD Series°dONLNdfi∂H¬)_. disc, because at that time we weren’t sure it°dONLNd
  2823. ¬ñŒÏ(Í¥Kwould make it onto that disc. Yes, we’ve responded to your complaints about°dONLNdYŒñ⁄ª* develop°dONLNd`Œª⁄˝)%
  2824.  in HyperCard
  2825. °dONLNdmœ˝◊(Ù® 
  2826. °dONLNdoŒ⁄+6by switching to that popular viewing tool that you may°dONLNd¶⁄ñÊ˛(¥Jknow as “BlueNote” — now “Apple DocViewer” — the same tool that’s used for°dONLNdÒÊñÚΩ* viewing °dONLNd˘ÊΩÚ#)'New Inside Macintosh°dONLNd
  2827. Ê#Ú&)f.°dONLNd˛ñ
  2828. (&¥LThe Developer CD corresponding to Issue 11 contained a prerelease version of°dONLNd]
  2829. ñ* PDocViewer that still needed some work; for example, it wouldn’t work at all on a°dONLNdÆñ" * RMacintosh Plus. In lieu of a time machine, I’ve consulted the Magic 8-Ball DTSuses°dONLNd    "ñ.¸* Pto answer developer questions, and it tells me that the CD corresponding to this°dONLNd    R.ñ:π*     issue of °dONLNd    [.π:fi)#develop°dONLNd    b.fi:    )%> — called the “November/December” CD, to ease the transition —°dONLNd    °:ñF(b¥Nwill include a version 1.0 release of DocViewer along with Issues 11 and 12 in°dONLNd    FñR…*     DocViewer xBx/
  2830. (Ö. )2
  2831. (CAROLINE ROSE (AppleLink CROSE) has been*
  2832. 6writing software documentation since before there were*
  2833. 3personal computers or even lava lamps. Her total of*
  2834. 9five years at Apple is (to use the jargon she helped coin*
  2835. -in Inside Macintosh Volume I) a discontinuous*
  2836. 5selection, interrupted by as many years at NeXT. When*
  2837. 5not reading, writing, coining, or otherwise obsessing*
  2838. -over words, Caroline enjoys the outdoors. (As*
  2839. songwriter Greg Brown puts it,(èv3“People say small things when they stay too long in*
  2840. /little rooms.”) The highlight of her summer was*
  2841. 4“swimming Lava Falls”: being thrown from a raft that*
  2842. 5capsized in the largest rapid (a 37-foot drop) on the*
  2843. -Colorado River in the Grand Canyon, and being*
  2844. 2rescued by a small paddleboat that braved the next*
  2845. 1rapid with 12 worried souls aboard. Talk about an*
  2846. 1adrenaline rush! And she lived to tell the tale.•
  2847. 4◊q·3
  2848. (ÚDd)e)v)e)l)o)p)  
  2849. )
  2850. December 1992ˇ ö◊#ˇ ˇˇˇˇ#◊ 
  2851. d, Palatino
  2852. .°dONLNdâïä+6±Oformat. Version 1.0 should work on Macintosh Plus and newer models, with system°dONLNdPï°„* /software version 6.0 and later. Back issues of °dONLNdï„°)Àdevelop°dONLNdÜï°Ç)% will eventually also make°dONLNd°°≠Ö(…6Qtheir way over into this format (the 8-Ball is hazy regarding just when this will°dONLNdÛ≠πâ* Nhappen). We’d really like your feedback on DocViewer and how well it works for°dONLNdBπ≈=* reading °dONLNdJπ=≈b)%develop°dONLNdQπb≈|)%A (or anything else). Please check it out, and send your flames or°dONLNdì≈—∏(Ì6 even praise to AppleLink DEV.CD.°dONLNdµ›Èè*MWhoops — did I say “DTS”? Old habits die hard. Another change we’re gradually°dONLNdÈıG*
  2853. making in °dONLNd
  2854. ÈGıl)/develop°dONLNdÈlık)%8 is to shift from “Developer Technical Support” (DTS) to°dONLNdMıà(6N“Developer Support Center” (DSC). As you may have read in the April 1992 issue°dONLNdú
  2855. #* of °dONLNdü#
  2856. _) Apple Direct°dONLNd´_
  2857. |)<>, the DSC is a gateway to DTS as well as other support-related°dONLNdÍ
  2858. x(56Oresources. It provides a focal point for developer queries — a single AppleLink°dONLNd:%í* Maddress, DEVSUPPORT, and a single phone number, (408)974-4897. Developers who°dONLNdà%1É* Paren’t Apple Associates or Partners can contact the DSC for limited nontechnical°dONLNdŸ1=ã* Ssupport and referrals. We’ll be adjusting to this change along with others that are°dONLNd-=I* 6creeping in: Tech Note references no longer numbered; °dONLNdc=IV)Inside Macintosh°dONLNds=VIÖ)N  references°dONLNdIUR(q6
  2859. that include °dONLNdåIRU∏):New Inside Macintosh°dONLNd†I∏Un)f(; DocViewer as the on-line viewing tool;°dONLNd…UaÑ(}6Spostdating; and other changes that I foresee but don’t dare reveal lest I upset the°dONLNdam´* !delicate balance of the universe.°dONLNd?yÖã*TFinally, I feel compelled to explain my bizarre trivia answer in Issue 11, about the°dONLNdîÖë|* Mupside-down character that wasn’t. I claimed the offending character was “8,”°dONLNd‚ëùv* Kwhich on the contrary looks perfectly OK — not at all topheavy — in printed°dONLNd.ù©=* develop°dONLNd5ù=©)%I. It turns out that this “8” is topheavy only in LaserWriter output. That°dONLNd©µÉ(—6Rwill teach me to use a media-specific question! I think I’ll quit while I’m behind°dONLNd“µ¡{* Pand lay off trivia questions altogether for a while (even though I’ll miss those°dONLNd#¡Õé* friendly letters from you).
  2860. %A∞òÅ&Ä&HHëà£ˇˇˇˇˇˇˇ˛˛˛˛˛˛˝˝˝˝˝˝¸¸¸¸¸¸˚˚˚˚˚˚˙˙˙˙˙˙˘˘˘˘˘˘¯¯¯¯¯¯˜˜˜˜˜˜    ˆˆˆˆˆˆ
  2861. ıııııı ÙÙÙÙÙÙ ÛÛÛÛÛÛ
  2862. ÚÚÚÚÚÚÒÒÒÒÒÒÔÔÔÔÔÔÓÓÓÓÓÓÌÌÌÌÌÌÏÏÏÏÏÏÎÎÎÎÎÎÍÍÍÍÍÍÈÈÈÈÈÈËËËËËËÁÁÁÁÁÁÊÊÊÊÊʉ‰‰‰‰‰„„„„„„‚‚‚‚‚‚······‡‡‡‡‡‡ flflflflflfl!fifififififi"››››››#‹‹‹‹‹‹$€€€€€€%⁄⁄⁄⁄⁄⁄&ŸŸŸŸŸŸ'ÿÿÿÿÿÿ(◊◊◊◊◊◊)÷÷÷÷÷÷*’’’’’’+‘‘‘‘‘‘,””””””-““““““.——————/––––––0œœœœœœ1ŒŒŒŒŒŒ2ÕÕÕÕÕÕ3ÃÃÃÃÃÃ4ÀÀÀÀÀÀ5      6………………7»»»»»»8««««««9ΔΔΔΔΔΔ:≈≈≈≈≈≈;ƒƒƒƒƒƒ<√√√√√√=¬¬¬¬¬¬>¡¡¡¡¡¡?¿¿¿¿¿¿@øøøøøøAææææææBΩΩΩΩΩΩCººººººDªªªªªªE∫∫∫∫∫∫FππππππG∏∏∏∏∏∏H∑∑∑∑∑∑I∂∂∂∂∂∂JµµµµµµK¥¥¥¥¥¥L≥≥≥≥≥≥M≤≤≤≤≤≤N±±±±±±O∞∞∞∞∞∞PØØØØØØQÆÆÆÆÆÆR≠≠≠≠≠≠S¨¨¨¨¨¨T´´´´´´U™™™™™™V©©©©©©W®®®®®®XßßßßßßY¶¶¶¶¶¶Z••••••[§§§§§§\££££££]¢¢¢¢¢¢^°°°°°°_††††††`üüüüüüaûûûûûûbùùùùùùcúúúúúúdõõõõõõeööööööfôôôôôôgòòòòòòhóóóóóóiññññññjïïïïïïkîîîîîîlììììììmíííííínëëëëëëoêêêêêêpèèèèèèqéééééérççççççsååååååtããããããuäääääävââââââwààààààxááááááyÜÜÜÜÜÜzÖÖÖÖÖÖ{ÑÑÑÑÑÑ|ÉÉÉÉÉÉ}ÇÇÇÇÇÇ~ÅÅÅÅÅÅÄÄÄÄÄÄÄÅ~~~~~~Ç}}}}}}É||||||Ñ{{{{{{ÖzzzzzzÜyyyyyyáxxxxxxàwwwwwwâvvvvvväuuuuuuãttttttåssssssçrrrrrréqqqqqqèppppppêooooooënnnnnnímmmmmmìllllllîkkkkkkïjjjjjjñiiiiiióhhhhhhòggggggôfffffföeeeeeeõddddddúccccccùbbbbbbûaaaaaaü``````†______°^^^^^^¢]]]]]]£\\\\\\§[[[[[[•ZZZZZZ¶YYYYYYßXXXXXX®WWWWWW©VVVVVV™UUUUUU´TTTTTT¨SSSSSS≠RRRRRRÆQQQQQQØPPPPPP∞OOOOOO±NNNNNN≤MMMMMM≥LLLLLL¥KKKKKKµJJJJJJ∂IIIIII∑HHHHHH∏GGGGGGπFFFFFF∫EEEEEEªDDDDDDºCCCCCCΩBBBBBBæAAAAAAø@@@@@@¿??????¡>>>>>>¬======√<<<<<<ƒ;;;;;;≈::::::Δ999999«888888»777777…666666 555555À444444Ã333333Õ222222Œ111111œ000000–//////—......“------”,,,,,,‘++++++’******÷))))))◊((((((ÿ''''''Ÿ&&&&&&⁄%%%%%%€$$$$$$‹######›""""""fi!!!!!!fl      ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚ
  2863.  
  2864.  
  2865.  
  2866.  
  2867.  
  2868. Û Ù ı
  2869.  
  2870.  
  2871.  
  2872.  
  2873.  
  2874. ˆ                        ˜¯˘˙˚¸˝˛ˇÄ&%A∞ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€
  2875. ů˙ˇÅÎ
  2876. Å˙˜ˇÅÏ
  2877. Å¸ÙˇÅÌ
  2878. Å˛ÒˇÅÓÅ˘ˇ˝¸ˇÅÓ Å˘ˇ˙¸ˇÅÔ Ç˙ˇ˜˝ˇÅÔ É˚ˇı˝ˇÅÔ Ñ˚ˇÙ˝ˇÅÔ Ö¸ˇÚ˝ˇÅÔ Ü¸ˇÒ˝ˇÅÔ á¸ˇ˝ˇÅÔ à¸ˇÓ˝ˇÅ â¸ˇÌ˝ˇÅ»˛ˇΔ¸ˇÏ˝ˇÅÀ˜ˇÀ¸ˇÏ˝ˇÅÔÕÙˇÕ¸ˇÎ˝ˇÅÔœÚˇÕ˝ˇÍ˝ˇÅÔ—˘ˇ˚˝ˇœ˝ˇÈ˝ˇÅÔ”˙ˇ˜˛ˇ–¸ˇÍ¸ˇÅÔ‘˙ˇˆ˛ˇ—¸ˇÈ˝ˇÅÓ’˚ˇÙ˛ˇ“¸ˇË˝ˇÅÓ◊˚ˇÛ˝ˇ”¸ˇË¸ˇÅÓÿ˚ˇÚ˝ˇ”˝ˇË¸ˇÅÌŸ˚ˇÒ˝ˇ‘˝ˇÁ¸ˇÅÌ⁄¸ˇÔ˝ˇ’¸ˇË¸ˇÅÏ€¸ˇÓ˛ˇ’¸ˇË˚ˇÅÏ‹¸ˇÌ˛ˇ’˝ˇÁ¸ˇÅΛ¸ˇÌ˝ˇ÷˝ˇÁ¸ˇÅÍfi¸ˇÏ˛ˇ÷˝ˇÁ˚ˇÅÍfl¸ˇÎ˛ˇ◊¸ˇË˚ˇÅȇ¸ˇÎ˝ˇ◊˝ˇË˚ˇÅË·¸ˇÍ˛ˇ◊¸ˇÈ˚ˇÅÁ‚˝ˇÈ˝ˇÿ¸ˇÈ˚ˇÅÊ„¸ˇÈ˛ˇÿ˚ˇÍ˚ˇÅ„˝ˇÈ˛ˇ◊˘ˇÌ˙ˇÅ‰¸ˇÈ˛ˇÿ¯ˇÔ˘ˇÅ‰‰˝ˇËˇˇÿ˜ˇ˙ˇÅ‚½ˇË˛ˇŸˆˇÒ˙ˇÅ·ʸˇË˛ˇŸ˜ˇÚ˘ˇÅ‡Á¸ˇË˛ˇŸˆˇÙ¯ˇÅflÁ˝ˇÁ˛ˇ⁄ˆˇÙ˘ˇÅ›˸ˇË˛ˇŸ˜ˇı¯ˇÅ‹ȸˇÁ˛ˇ⁄ˆˇ˜˜ˇÅ€È˝ˇÊˇˇ⁄ˆˇ¯˜ˇÅŸ͸ˇÁ˛ˇ⁄˜ˇ˘˜ˇÅ◊Í˝ˇÊˇˇ⁄˜ˇ˙ˆˇÅ÷νˇÊˇˇ⁄ˆˇ˝ıˇÅ‘νˇÁ˛ˇ⁄˜ˇÙˇ®ˇˇ≠ϸˇæÈˇ©˘ˇ∞Ï˝ˇΩΡ®˜ˇ±̸ˇæÌˇºˇˇÌˆˇ±Ì˝ˇΩÔˇº¸ˇÛˇ≤Ì˝ˇæÒˇª˙ˇ˙ˇ¸ˇ≤Ì˛ˇæÚˇ∫˘ˇÒ˚ˇ¸˝ˇ≤Ó˝ˇæÙˇ∫˜ˇÒ¸ˇ¸¸ˇ≤Ó˝ˇøÙˇºıˇÒ¸ˇ˚˝ˇ±Ó˝ˇ¿Ùˇ”¸ˇÛˇÒ¸ˇ¸¸ˇ±Ó˛ˇ¿Ùˇ”˙ˇÛÒˇÚ¸ˇ¸¸ˇ∞Ô˝ˇ¡Ùˇ”¯ˇ˜ıˇ¸ˇÒ¸ˇ˝˚ˇ∞ Ô˝ˇ√Ûˇ“¯ˇ˚Ûˇ¸ˇ¸ˇ˙ˇØÔ˝ˇƒÚˇ”Êˇ¸¸ˇÙˇÆÔ˛ˇƒÚˇ”Áˇ˚¸ˇÓˆˇ≠˝ˇΔˇ‘Áˇ˚˚ˇÓ¯ˇ´˝ˇ«Ôˇ’Ρ¸ˇ˝˚ˇÓ¯ˇ™˝ˇ…Ìˇ÷Ôˇ˚¸ˇ˝¸ˇıˇ™%˝ˇÀÒˇ˝ˇ◊¯ˇ˝ˇ˜˚ˇ˚ˇÚÒˇ¨(˝ˇÃ˘ˇ˘ˇ˝ˇÿ¯ˇ˝ˇˆÙˇÙΡΔÛˇ¯3˝ˇŒ¯ˇ˙ˇ˛˝ˇŸ¯ˇ˛˝ˇˆıˇ˜ÚˇÊˇˇˇ¸ˇ˘⁄ˇ˘"˝ˇœ˘ˇ˛˘ˇ˝˝ˇ€¯ˇ˛˝ˇÙ‡ˇ˙∞ˇ˘"˝ˇ—˘ˇ¸˙ˇ¸˝ˇ›˜ˇ˝˝ˇÙ‚ˇ˜≤ˇ¯"˝ˇ“˘ˇ¸˙ˇ˚˝ˇfl˜ˇ¸¸ˇÛÊˇÚ¥ˇ¯&˝ˇ‘˘ˇ˚˘ˇ˚¸ˇ„ıˇ¸¸ˇÚˡӫˇ¸˝ˇ˝ˇ÷˘ˇ˘˙ˇ˘¸ˇÊıˇ˙¸ˇÒÓˇï"˝ˇ◊˘ˇ¯˚ˇ¯˚ˇÎÚˇ˙¸ˇÔ˛ˇ¸ˇå˝ˇŸ˘ˇ˜˙ˇ˜˚ˇÔˇ˙˚ˇÅÒ˝ˇ€˘ˇˆ˙ˇı˘ˇ˜Îˇ¸˙ˇÅ˝ˇ‹˙ˇÙ˚ˇÛ·ˇ¸ˇ¸˙ˇÅÔÔ˝ˇfl˘ˇÛ˚ˇÚ¡˝¸ˇ˝˙ˇÅÓÔ˝ˇ·˘ˇÚ˚ˇÔΡ˘˝ˇ˛˘ˇÅÌÔ˝ˇ„¯ˇÒ¸ˇÏÒˇıÛˇÅÏÓ˝ˇÊ¯ˇ˚ˇÈ˙ˇÔÙˇÅÎÓ˝ˇË¯ˇÓ¸ˇœˆˇÅÈÓ¸ˇÏˆˇÓ˚ˇŒ¯ˇÅË̸ˇıˇÏ¸ˇÃ˚ˇÅÊÌ˙ˇıÙˇÎ˚ˇ ˇÅ„ϘˇˇË¸ˇÅ™ Í͡¸ˇÅ™ ËÓˇ‰¸ˇÅ© ÂÙˇ·˝ˇÅ®π¸ˇÅ®π¸ˇÅ®∫¸ˇÅß∫¸ˇÅߪ¸ˇÅ¶ª¸ˇÅ¶º¸ˇÅ•º¸ˇÅ•º˝ˇÅ§º˝ˇÅ§Ω¸ˇÅ§Ω˝ˇÅ£Ω˝ˇÅ£Ω˛ˇÅ¢æ¸ˇÅ£Ω˛ˇÅ¢ªˇÅ¢ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€ÅÅ€
  2879. d,     Helvetica
  2880.     °dONLNd?$/Y+¸b
  2881. Caroline Rose°dONLNdM0;2* Editor v4v&,Times
  2882. +˜" 
  2883. +
  2884. 3
  2885. (è6SUBSCRIPTION INFORMATION*
  2886. To subscribe to )6develop), use the subscription card in(£67the back of this issue. Please address all subscription)≥-(≠6related inquiries to )@    develop, )Apple Computer, Inc., P.O.(∑6,Box 531, Mt. Morris, IL  61054 (or AppleLink*
  2887. DEV.SUBS).•(è˜ BACK ISSUES*
  2888. %For information about back issues of )|develop )and how(£˜5to obtain them, see the last page of this issue. Back*
  2889. issues are also on the )KDeveloper CD Series)I disc.•
  2890. 4ØÚ·Ø
  2891. +IE EDITORIAL  
  2892. ))
  2893. December 1992ˇ.◊#ˇ ˇˇˇˇ#◊ 
  2894. d,     Helvetica
  2895. .°dONLNdi5{ç+SñLETTERS
  2896. °dONLNdñ$û(@¥P°dONLNd    ù$¶)O°dONLNd
  2897. •$≠)S°dONLNd ¨$≥)T°dONLNd ≤$∫)A°dONLNd
  2898. π$¿)L°dONLNdø$¬) °dONLNd¡$…)D°dONLNd»$–)E°dONLNdœ$◊)V°dONLNd÷$Ÿ)I°dONLNdÿ$fl)L°dONLNdfi$Ê)S°dONLNdÂ$Ë) °dONLNdÁ$Ô)E°dONLNdÓ$ˆ)A°dONLNdı$¸)T°dONLNd˚$˛)I°dONLNd˝$)N°dONLNd$ )G°dONLNd $) °dONLNd
  2899. $)C°dONLNd$)D°dONLNd$#)S°dONLNd "$()?, Palatino°dONLNd"(ñ4Ω(P¥develop °dONLNd*(Ω49)'is the most exciting piece of°dONLNdH4ñ@((\¥!regular mail I get after Japanese°dONLNdj@ñL#*  animation laserdiscs. I joyfully°dONLNdãLñXC* 'received Issue 11 but unfortunately the°dONLNd≥XñdD* &wolverines in the Postal Service dined°dONLNd⁄dñpF* 'on some of the plastic and no CD was to°dONLNdpñ|›* be found! Help!°dONLNdÑñêÃ* — Jim Perry°dONLNdûñ™*Would you consider mailing °dONLNd9û™=)Ädevelop °dONLNdAû=™F)'in°dONLNdD™ñ∂G(“¥%a nonperforated plastic wrapping? The°dONLNdj∂ñ¬G* &perforation was two-thirds torn when I°dONLNdë¬ñŒ * received it.°dONLNdû÷ñ‚Î*— Eva Schlesinger°dONLNd∞ñ¸‘*I really enjoy °dONLNdø‘¸˘)>develop°dONLNdΔ˘¸I)%, but I have to say°dONLNd⁄¸ñ*($¥#that I’ve enjoyed it less recently.°dONLNdˇ ñF*%Some time ago the CDs came in a small°dONLNd%ñ$3* "envelope well protected inside the°dONLNdH$ñ08* "magazine, and everything was fine.°dONLNdk0ñ<±* Now, °dONLNdp0±<÷)develop°dONLNdw0÷<D)% is shipped with the CD°dONLNdè<ñHF(d¥&in its own holder, which would seem to°dONLNd∂HñTG* 'be a fabulous idea except that you were°dONLNdfiTñ`7* $blind-sided by the U.S. Post Office.°dONLNddñp=*$Every month since the CD got its own°dONLNd(pñ|J* &holder, the Post Office has mangled my°dONLNdO|ñàD* %plastic bag, CD holder, and magazine.°dONLNduàñî≈*     Today my °dONLNd~à≈îÍ)/develop°dONLNdÖàÍîH)% issue 11 arrived sans°dONLNdúîñ†>(º¥'CD. I called the subscription office (1°dONLNd√î>†B)®-°dONLNdƒ†ñ¨F(»¥&800-545-9364) and they promise to send°dONLNdΨñ∏1* !me another within four weeks.(!?)°dONLNd
  2900. ∏ñƒµ* Growl.°dONLNdÃñÿ *
  2901. — Bob Cent°dONLNd‡ñÏG*)Most of the mail I get is, unfortunately,°dONLNdIÏñ¯I* (on this subject. Our Production Manager,°dONLNdr¯ñ%* Hartley Lesser, really has been°dONLNdíñ;* %working on it. Even with Issue 11, we°dONLNd∏ñ;* $took a small step toward solving the°dONLNd›ñ(9* "problem: since many people thought°dONLNd(ñ4J* %someone was breaking open the package°dONLNd&4ñ@2* "and stealing the CD, we inserted a
  2902. 4b™rp°dONLNdK\$¸(@z#thick sheet of paper over the CD so°dONLNdo$\0Ë*  that it wouldn’t be visible. But°dONLNdê0\<
  2903. * 'complaints of torn packaging still came°dONLNd∏<\H
  2904. * (in, so clearly the packaging just wasn’t°dONLNd·H\T* #sturdy enough. The packaging around°dONLNdT\`¯* #Issue 12 and its CD should be about°dONLNd)`\lˇ* $twice as thick as before and have no°dONLNdNl\x    * 'perforation. If that doesn’t work we’ll°dONLNdvx\Ñ≤* try something else.°dONLNdäà\î*(Issue 7 was the last one to list the 800°dONLNd≥î\†„* number you used to contact the°dONLNd“†\¨* )subscription office (though it stubbornly°dONLNd¸¨\∏Ú* !has still shown up on our renewal°dONLNd∏\ƒ * (notice). The correct number is 1-800-877°dONLNdF∏ ƒ)Ø-°dONLNdGƒ\– (Ïz&5548. The person you spoke to normally°dONLNdn–\‹ * &doesn’t handle calls regarding develop°dONLNdï‹\Ë * $and didn’t know that replacement CDs°dONLNd∫Ë\Ù* $should be mailed within a day or two°dONLNdflÙ\* )of notification of the problem. Sorry for°dONLNd    \ * $the mixup. We hope you’ll never need°dONLNd. \≥* that service again!°dONLNdB \,ß*— Caroline Rose°dONLNdR<\Hd*S°dONLNdS<cHk)C°dONLNdT<jHr)R°dONLNdU<qHy)E°dONLNdV<xHÄ)E°dONLNdW<Há)N°dONLNdX<ÜHê)W°dONLNdY<èHó)    R°dONLNdZ<ñHô)I°dONLNd[<òHü)T°dONLNd\<ûH°)I°dONLNd]<†H®)N°dONLNd^<ßHØ)G°dONLNd_<ÆH±) °dONLNd`<∞H∏)C°dONLNda<∑Hø)A°dONLNdb<æHΔ)V°dONLNdc<≈HÕ)E°dONLNdd<ÃH‘)A°dONLNde<”H⁄)T°dONLNdgL\X(tz&Your Issue 11 column on drawing to the°dONLNdéX\d * (screen was really useful to me. I had an°dONLNd∑d\p
  2905. * %animation program that wrote directly°dONLNd›p\|˛* %to the screen and it worked fine. But°dONLNd    |\à* $when I upgraded to a new accelerator°dONLNd    (à\î * &card my program kept crashing. I spent°dONLNd    Oî\†* (months trying to figure out the problem.°dONLNd    x†\¨* (But your article fixed it straight away.°dONLNd    °¨\∏    *  All I needed was the SwapMMUMode°dONLNd    ¬∏\ƒ* $calls. I don’t know why the previous°dONLNd    Áƒ\–Ì*  card didn’t require them, but my°dONLNd
  2906. –\‹ * program works fine now.°dONLNd
  2907.  ‰\†*
  2908. — Tony Cooper°dONLNd
  2909. .¯\    *'Thanks for your interest in the column.°dONLNd
  2910. V\Ú* !We’re glad it was helpful to you.°dONLNd
  2911. x\ 
  2912. *'One thing we want to be sure to mention°dONLNd
  2913. † \,* &is that writing directly to the screen°dONLNd
  2914. «,\8
  2915. * 'will break for sure on future Macintosh°dONLNd
  2916. Ô8\D
  2917. * %systems based on RISC technology. And°dONLNd D\P©* we again want to vBv/(y0 
  2918. +
  2919. 4
  2920. +Ç WHY DON’T YOU WRITE MORE OFTEN?*
  2921. 4We welcome timely letters to the editors, especially*
  2922. 4from readers reacting to articles that we publish in*
  2923. develop).. Letters should be addressed to Caroline Rose(∑¥(or, if technical )4develop)-related questions, to Dave(¡¥/Johnson) at Apple Computer, Inc., 20525 Mariani*
  2924. 1Avenue, M/S 75-2B, Cupertino, CA 95014 (AppleLink*
  2925. 0CROSE or JOHNSON.DK). All letters should include4◊Ø·q(çv2your name and company name as well as your address*
  2926. 4and phone number. Letters may be excerpted or edited*
  2927. 2for clarity (or to make them say what we wish they*
  2928. did).)•
  2929. (ÚDd)e)v)e)l)o)p)  
  2930. )
  2931. December 1992ˇ≤◊#ˇ ˇˇˇˇ#◊ 
  2932. d, Palatino
  2933. .°dONLNd$√+6@&stress that the only applications that°dONLNd'$0À* (should even consider writing directly to°dONLNdP0<¢* the screen are games and other°dONLNdo<Hv* animation programs.°dONLNdÉP\ *#— Brigham Stevens and Bill Guschwan,     Helvetica°dONLNdßlx *U°dONLNd®lx')S°dONLNd©l&x.)E°dONLNd™l-x5)R°dONLNd´l4x8)-°dONLNd¨l7x>)F°dONLNd≠l=xE)R°dONLNdÆlDxG)I°dONLNdØlFxN)E°dONLNd∞lMxU)N°dONLNd±lTx\)D°dONLNd≤l[xb)L°dONLNd≥laxh)Y°dONLNd¥lgxj) °dONLNdµlixq)R°dONLNd∂lpxx)E°dONLNd∑lwx)N°dONLNd∏l~xÜ)E°dONLNdπlÖxè)W°dONLNd∫léxë)    I°dONLNdªlêxò)N°dONLNdºlóxü)G°dONLNdæ|à»(§6'Recently I received a couple of renewal°dONLNdÊàîH* notices for °dONLNdÚàHîo)0develop °dONLNd˙àoîŒ)'in the mail. In trying°dONLNdî†∫(º6%to decipher these notices, I realized°dONLNd7†¨√* &that user friendliness is something we°dONLNd^¨∏¬* (should all be aiming for not just in the°dONLNdá∏ƒÃ* 'software we write, but in everything we°dONLNd؃–¿* %do. It’s interesting how working with°dONLNd’–‹¥*  the Macintosh makes one aware of°dONLNdˆ‹ËÕ* (human interface issues in everyday life.°dONLNdϯ–*'Anyway, I think there are a few ways in°dONLNdG¯J*
  2934. which the °dONLNdQ¯Jq)2develop °dONLNdY¯q∑)'renewal notices°dONLNdiÆ(,6!could be made more user friendly:°dONLNdã ƒ*'1. Leave a bigger space for writing the°dONLNd≥ ,n* credit card number.°dONLNd«0<–*)2. Clearly indicate on the renewal notice°dONLNdÒ<H≠* !the date my subscription expires.°dONLNdLX«*&3. Is there any reason why the renewal°dONLNd:Xdû* notices are printed in red ink?°dONLNdZlxb* —Tim Hammett°dONLNdgÄå¥*"We’re in the process of making the°dONLNdäåòö* changes you suggested to the °dONLNdßåöòø)Çdevelop°dONLNdØò§](¿6renewal notice.°dONLNd¿®¥Õ*)1. We’ll leave a bigger space for writing°dONLNdÍ¥¿Ä* the credit card number.°dONLNdƒ–º*$2. The notice will indicate when the°dONLNd(–‹¬* 'subscription expires. You can also find°dONLNdP‹˃* &this out at any time from your mailing°dONLNdwËÙÕ* (label: the number that appears on a line°dONLNd†Ù–* +by itself at the top of the label indicates°dONLNdà √* (the last issue you’ll receive unless you°dONLNdı 6* renew.°dONLNd¸(¬*(3. The reason for the red ink is so that°dONLNd%(4Õ* +this little piece of paper doesn’t get lost°dONLNdQ4@¬* 'on your desk. But you’ve inspired us to°dONLNdy@L–* )change it to a more readable, deeper red.°dONLNd£‚$Ç(@#We’re also correcting the 800 phone°dONLNd«$‚0ì* (number on the notice, to 1-800-877-5548.°dONLNd4‚@Ö*%Thanks for your letter. Without it, I°dONLNd@‚Lê* #would have assumed that the renewal°dONLNd:L‚Xq*  notice (which isn’t really in my°dONLNd[X‚dh* domain) was in great shape. I°dONLNdyd‚pm* appreciate the enlightenment.°dONLNdóx‚Ñ+*—Caroline Rose°dONLNd¶î‚†Í*R°dONLNdßîȆÒ)E°dONLNd®î†¯)U°dONLNd©î˜†ˇ)S°dONLNd™î˛†)E°dONLNd´î†
  2935. )D°dONLNd¨î †) °dONLNd≠î†)C°dONLNdÆî†)D°dONLNdØî†$)S°dONLNd∞î#†'):°dONLNd±î&†)) °dONLNd≤î(†+)I°dONLNd≥î*†2)S°dONLNd¥î1†4) °dONLNdµî3†6)I°dONLNd∂î5†<)T°dONLNd∑î;†>) °dONLNd∏î=†E)A°dONLNdπîD†L)R°dONLNd∫îK†R)T°dONLNdªîQ†W)?°dONLNdΩ§‚∞(ÃIn Issue 10 of °dONLNdç∞A):develop°dONLNd”§A∞á)%, Bruce Radford°dONLNd„∞‚ºã(ÿ%stated that he wasn’t sure what to do°dONLNd    º‚»{* !with his old CDs. He felt that he°dONLNd+»‚‘í* 'should recycle them, but he wasn’t sure°dONLNdS‘‚‡q* how. Well, I have a suggestion.°dONLNdt‰‚s*Many people forget that reusing°dONLNdî‚¸Ä* #something is often even better than°dONLNd∏¸‚Ñ* #straight recycling. My school would°dONLNd‹‚Ç* $have many uses for old issues of the°dONLNd‚ * develop°dONLNd é)% CD. I know a few friends who°dONLNd& ‚,í(H'would love copies, no matter how old; I°dONLNdN,‚8ê* &could use them in a programming class;°dONLNdu8‚Dê* 'and other students could cut them up to°dONLNdùD‚Pã* &make jewelry for school fundraisers. I°dONLNdƒP‚\w*  also have many uses for old 256K°dONLNdÂ\‚h*  SIMMs, which seem to be becoming°dONLNd    h‚tk* about as useful as pennies now.°dONLNd    'x‚Ñî*'So go ahead and send the stuff that you°dONLNd    OÑ‚êé* (think no one needs to me, or to a school°dONLNd    xê‚ú *     near you.°dONLNd    Ç§‚∞U*— Peter Bierman (age 16)°dONLNd    õ∞‚º* BS Software°dONLNd    ßº‚»D* 5757 Olentangy Blvd.°dONLNd    º»‚‘N* Worthington, OH 43085°dONLNd    “‹‚Ëã*%Thanks for the idea. Day care centers°dONLNd    ¯Ë‚Ùë* %and children’s museums have also been°dONLNd
  2936. Ù‚ç* &mentioned as possible destinations for°dONLNd
  2937. E‚ ë* &old CDs. We suggest that before giving°dONLNd
  2938. l ‚f* away CDs for for art projects,°dONLNd
  2939. ã‚$è* %developers put a deep scratch through°dONLNd
  2940. ±$‚0à* &the data side of the CD if it contains°dONLNd
  2941. ÿ0‚<z* "any confidential or licensed data.
  2942. 4^ˆnº x4x&({) 
  2943. +
  2944. 54ìÚ·Ø
  2945. (ÚŸ    LETTERS  
  2946. )$
  2947. December 1992ˇÚ◊#ˇ ˇˇˇˇ#◊ 
  2948. d, Palatino
  2949. .°dONLNdñ$?+¥@%For some wild and crazy ideas on this°dONLNd&$ñ0)* from Apple’s Developer Support°dONLNdE0ñ<0* "Center, see the Q & A on page 126.°dONLNdhDñP·*— Caroline Rose,     Helvetica°dONLNdx`ñlû*D°dONLNdy`ùl•)E°dONLNdz`§l¨)V°dONLNd{`´l≥)E°dONLNd|`≤lπ)L°dONLNd}`∏l¡)O°dONLNd~`¿l»)P°dONLNd`«l ) °dONLNdÄ`…lÃ)I°dONLNdÅ`Àl”)N°dONLNdÇ`“lŸ)T°dONLNdÉ`ÿl‡)E°dONLNdÑ`fllÁ)R°dONLNdÖ`ÊlÓ)N°dONLNdÜ`Ìlı)E°dONLNdá`Ùl˚)T°dONLNdà`˙l˝) °dONLNdâ`¸l)A°dONLNdä`l )D°dONLNdã`
  2950. l)D°dONLNdå`l)R°dONLNdç`l )E°dONLNdé`l')S°dONLNdè`&l.)S°dONLNdëpñ|˛(ò¥I’m on the Internet and °dONLNd©p˛|%)hdevelop °dONLNd±p%|J)'contains°dONLNd∫|ñàG(§¥&only AppleLink addresses. I’m guessing°dONLNd·àñî6* !that crose@applelink.apple.com is°dONLNdîñ†˙* your Internet address. °dONLNdî˙†!)ddevelop °dONLNd"î!†>)'really°dONLNd)†ñ¨6(»¥#should have an Internet address for°dONLNdM¨ñ∏E* &academic developers to send e-mail to.°dONLNdt¿ñÃ÷*
  2951. — Eric Kofoid°dONLNdÇ‘ñ‡B*#Adding “applelink.apple.com” to any°dONLNd¶‡ñÏ6* #AppleLink address converts it to an°dONLNd Ïñ¯J* (Internet address. The Internet addresses°dONLNdÛ¯ñA* %for me and develop’s Technical Editor°dONLNdñ3* #Dave Johnson are listed on the last°dONLNd=ñÓ* page of every issue.°dONLNdR$ñ0·*— Caroline Rose°dONLNdb\$d(@zB°dONLNdcc$k)A°dONLNddj$r)C°dONLNdeq$y)K°dONLNdfx${) °dONLNdgz$})I°dONLNdh|$Ñ)S°dONLNdiÉ$ã)S°dONLNdjä$í)U°dONLNdkë$ô)E°dONLNdlò$†)S°dONLNdmü$¢) °dONLNdn°$©)C°dONLNdo®$±)O°dONLNdp∞$∏)N°dONLNdq∑$ø)U°dONLNdræ$Δ)N°dONLNds≈$Õ)D°dONLNdtÃ$‘)R°dONLNdu”$€)U°dONLNdv⁄$„)M°dONLNdx(\4Ù(Pz#I noticed that your back issues are°dONLNdú4\@¢* listed at $13 in °dONLNd≠4¢@…)Fdevelop °dONLNdµ4…@)'
  2952. and at $10 in°dONLNd√@\L≥(hzthe APDA catalog.°dONLNd’P\\*!Why the discrepancy? Who should I°dONLNd˜\\h’* order the back issues from?°dONLNdp\|∞*— Michael Tackie, New York°dONLNd$É\èÁ*P.S. Great magazine. Very°dONLNd>è\õ˚* technical. I don’t understand°dONLNd\õ\ߡ* everything, but that’s good; it°dONLNd|ß\≥˜* forces me to become a better°dONLNdô≥\ø•* programmer.°dONLNd•…\’*%You pay a $3 shipping charge when you°dONLNdÀ’\·* (order from APDA, so it adds up to $13 in°dONLNdÙ·\ÌÅ* the end.°dONLNd˝ˆ\∞*— Caroline Rose°dONLNd
  2953. 
  2954. \ñ* P.S. Thanks!
  2955. 4KpV6
  2956. °dONLNd@+Nó(iI.CORRECTION TO APPLE EVENTS ARTICLE IN ISSUE 10"V?# V@V5"V6#"W?"W6
  2957.     °dONLNdMW+bfi*-The “Apple Event Objects and You” article in °dONLNdzWfib˛)≥develop°dONLNdÇc+n (äI8Issue 10 contains two errors in the printed sample code.°dONLNdªo+z* :The first problem is that five lines were omitted from the°dONLNdˆ{+Ü    * 5end of GetWindowIndex. The code at the top of page 25°dONLNd,á+íã* should be changed from,
  2958. Courier°dONLNdF¶H±â+
  2959. return noErr;°dONLNdT≤+Ω0(ŸI}°dONLNdV +’3*to°dONLNdY‚+Ìl*
  2960. if ((rawIndex
  2961. °dONLNdf‰lÏq)A 
  2962.     °dONLNdg‚qÌv)>
  2963. °dONLNdh‰vÏ{) 
  2964.     °dONLNdi‚{ÌÈ)numWindows)||(rawIndex
  2965. °dONLNd‰ÈÏÓ)n 
  2966.     °dONLNdÄ‚Ó̯)<=
  2967. °dONLNdlj¯Ï˝)
  2968.     °dONLNdÉ‚˝Ì)0)){°dONLNdâÓ9˘p(W *index = 0;°dONLNdñ˙9∂* return errAENoSuchObject;°dONLNd∞+I(-I} else°dONLNd∏9ì+ *index = rawIndex;°dONLNdÃ9)u* return noErr°dONLNdŸ*+50(QI}°dONLNd‹W&b(~D5The second bug is in the routine WriteRectToken (page°dONLNdc&n|* 30). The following call°dONLNd+Ç&ç’*#BlockMove(*thisRectDesc.dataHandle,°dONLNdPé4ôŸ+ !&tokenPtr->theRect,sizeof(Rect));°dONLNdr¶&±|(ÕDshould be changed to°dONLNdáæ&…’*#BlockMove(*thisRectDesc.dataHandle,°dONLNd¨ 4’Ì+ %(Ptr)tokenPtr->theRect,sizeof(Rect));°dONLNd“fi&È (D;Since theRect is actually a pointer to a rectangle (see the°dONLNdÍ&ı* ;declaration at the top of page 29), the first version would°dONLNdJˆ& * :have destroyed the pointer and four bytes of the following°dONLNdÖ&
  2969. X*
  2970. long integer.°dONLNdì&(*Thanks to Doug McKenna, the author of Resorcerer, for°dONLNd…)&4ò* pointing out these problems.4^:_6 l?^?"_?# _@_9"_: _;_5 l6^6"_6# vBv/
  2971. (y0 
  2972. +
  2973. 64ëq·3
  2974. +od)e)v)e)l)o)p)  
  2975. )
  2976. December 1992ˇ.î◊#ˇ ˇˇˇˇ#◊ 
  2977. d,     Helvetica
  2978. .°dONLNd%%5ç+CP
  2979. TECHNIQUES°dONLNd C$Sç(nB FOR WRITING°dONLNdakqç+GAND°dONLNd)èç(™G    DEBUGGING°dONLNd%ù≠ç(»8
  2980. COMPONENTS
  2981. .,æ§òÄ<êxHH‡®TŎˇˇˇˇˇÓÓÓÓÓÓ››››››ÃÃÃÃÃꪪªªª™™™™™™ôôôôôôààààààwwwwww    ffffff
  2982. UUUUUU DDDDDD 333333
  2983. """"""êx.,æ§#˝ò
  2984. ôàòòxáveTC3˜2"2"Ò2˚3CC˛DTUefw3ôôöôöôö˝ôâôôââ˛ôààwfUD33##"#"#"#"#"#"˘#˝3˝4EEVV,¸ôò˝ô©ôô©ô˛©ôô˛©˝ô¸òàááwveUTD˛C¸3˚CDD˛U8 UDC3##"#5Vgàx˛âôâ˝ôâ˚ôö˝ô    öôö™ôôöö©™˛ö ôö™ö™ö™äöôôâà8˛effv˛wòòôòòÜeTDUeÜfwxfxàò˛ô˝©ô˛©™™©™™˝∫ª´ºÀºª˝Ã‹‹5wffUUEUEE˝U˛V¸fgwxâ´˛ö˛™ö™ôòww˝g
  2985. wxz´™ªºªºªª˛ºª˛º8&DUUföËÃ∫ô™ÀËÃÀπ©áwvfeefáÜffvfeefeffve˝fvffef˛e˛fe¸f7˛UEEgàâvDEEUUVVffggxàââÕ€∫´ªºÃ˝Õ›¸Õ›‹›¨Õ››Œfi˝›Õ››˛Õ6˛wááw˛áwáá˛v feeUTTDTTzfÖ˛U˝efefef˝e˛fe˝fe˛fef˛e7˛xwxwxwxwx¸wxwxwà˛xââàww˚gfww˛gwgwgwwgwwàwxgwxâôöö/ò˚àòàòààá¯àá˛àáààò˙àòàòòôò˝ô©©ôô©©™©∫˛™∫2    ôôâôòôââôâ¸àâà˛âàâàââàà¯âôââ˚ôöôöôöö˛™ö˛™´´;˛∫™©©˛™©©ô©˛ô©ô©˛ô©ô™ôô©ôô©˛ô©˛ô©©™©™©™©˛™˛∫ª∫ªªÀÀªÀ)›Ã˛ÕÃÕÕÃúªª˝™öö™Óö˝™ö™ö™™˝´ªªººªªºº7›‹‹›˛‹›‹Ã⁄ª››ÃÕ˝Ã‹˛ÃÀÀªª∫∫™˛∫    ™™∫™D∫∫ªª∫˛ªÀªÀÀ˘Ã‹4›Õ››Õ˝›ÃxögºÃÃÕկà ÕÃÕÃúÃÃÕÃ√,˝›ÕÛ˝Õ    ÃÕÃÕÕÃÃÕÃÕ;››Ì›ÌÌÓÌÓÁåÃòú›ÌÓ‹›‹Ì›‹Ã‹›‹››˛‹››‹‹€3}›Ì¸›Ì›ÓÌÌ›ÌÌ˛˛ÔˇÔ=Ô˛ÔÔ˛ÓfiÓ{ª¨…äÕ˛›fi›Ófi›fifi››ŒÕÕÃÃÕÕúì#¨ÃºfiÕ˛›Ω›˛ÓfiÓfiˇÓÓˇ˛Ó<˛ÓÓˇ˛˛ˇ˛ÈËõÀôÀÀª∫∫˛™ªªºÃ‹‹›‹›‹fi‹ÿ2<fiÓÌ˛Ó    ËUEæ˛˛Ô˛Ô˛˝ˇ˛˛=;ÔÓˇÓÓÔÔÓÏÕõ¨fiÕπÓˇÔÔˇÓÔ›fi›ÕÀúÃÃÕúªR#{ΩˇˇÔÔÓEgf[ÔÓÓÔÓÔÔÓÔˇ˛Ô4Ó˛ˇ˛ˇ˛˛    ¸⁄CππŒ⁄˛ˇ˛˛ˇ˛ˇ˛˛ˇˇ˛˛Ô˛ˇˇ˛ı24Ô¸ˇıfäyܘˇ˛ˇ3ÓÓÔÓ˝Ôfi÷45UX€ÔˇÓÔÔˇÔˇÔˇÓÔˇˇ˝ÔÓ2#>Ô¸ˇwôõ™ôدˇ˛˛-˝Ì›Ó›Ì‹÷˛C E‹˛ˇ˛ˇ˛ˇ˛ˇˇÔˇ¸˛ˇ˛Û"3Æ˚ˇôx´™…üˆˇ-fiÓÌÓfifi˛›÷443EŒ˙ˇÔ˘ˇÔÓ"#$ÔÓ˝ˇ˚∑gõjΩØ¯ˇÔ˛,ÌÌÓˇÓÓÌÌÏ’y•fÖœıˇœ˝ˇ‚23^ˇ˛˝ˇ˙§TVeùœ¯ˇ˛˛6fifiÓˇÓÓˇÓÏdgá|ïø¸ˇÔˇˇÔÔ˚ˇ›"#5ÔÔˇÔÔˇˇÎugWf^ø˝ˇÔÔ˝ˇÓ&ÓÓÌ˛ˇ˛ˇ˚dDTVdøÒˇ‚"3n˙ˇ˘VwgeZè¯ˇ˛Ó*ÓfiÓÔÔˇÔÔÓD3S44flıˇÔˇˇ˛"&Ô˙ˇ˚D4EEW¯ˇ˛ˇ$˛ˇ˛˚ˇ‘UfvU˛˙ˇ˛˚ˇÓ‚"2o¯ˇUevUfÔˆˇ1Óˇ˛flÓÔˇÓÓ’FUVHÔ˝ˇÔ˛ˇ˛˛ÔˇfiÓ%Ô¯ˇEVUVVÔ˘ˇ˛Ôˇ3Ô˛ˇˇ˛ˇˇ˛ˇÙefel˛ˇ˛˛ˇ˛˛
  2986. ÓÔÓ˛R!!""Æ˝¯ˇueef~˚ˇ˛ˇ˛ˇÓ˛7˛fi¸ˇÓ²VXüÔÓ˝ˇÔÓfiÔÓ÷,fifi›fi˛Ó    ÔÓÔˇΔUVVjÔ˝ˇ˛fi˛ÓˇˇÓ;Ó˛Ó˛ÔÓˇ˛ÌUVefZvÓ˛ˇˇ˛˛    Ì‹À©A!"!!ã˛›ÓÓ˝Ì››’efvmÓ˝ˇ˝fl˛ˇÌÓ<ÓˇÔˇÔÔÓÓdeEfeWóSéÔÔ˛Ô›2˛%Ø››Ófifi›Õ≈ggf_Ô˝ˇ˝œˇÔ˛›fi:ÓÓÌ˛Ó˛ÌvTóTUfôfÉCmÔ˛Ó“!˝""2!!*ÌÓÌÔ‹ÌfiÑffee¸ˇ¸Œ˛ˇÓÓ<fi˛ÔÓ›DV4©DEWgVX6#(ÓfiA#""˝ÔÓflfiÓfi’TVVUXfÔˇˇÔÏæˇfi˛Õfi=ÌÓÔˇ˛4TdT∏ÑDffeftdTmÓ!!˛!31!!"1!!!_ˇ®áòÖefeUfßáuäˇˇÏ›Ó˛¸››<≠˛fiÂEETDfÑ3VfUVgFUG›˝#˛".ÓôãuVvWvEXáwvfo˛‹ÕÓÔ‹Õ›=!!3TeEeTmâ3feeVfTeTk!˛"1!!!C!!,ÌŸµwvvΔwUhΩwàvfÆ‹€ÓÌ∑dB9˛5UFEE^…3f˝VeVVC˝"!˝#˛úŸFggfzªex⁄whxwv3"˛ˇ7˝UUer3[∫CfdBDffved1!!21˝!31˛!"&ËgáveÜx©ãòwáà»ÜB"¸!7VUEF3F´5UT44VWWffD3¸2˝gwffgxà©¶vWyºwe¸9 UvT2"V YeUgUegwevfR3!!!!#A¸áwufáwyáßÜvh›òvQ!˝6˛VfSC2FÀlgUEEggififU!"˚"âf5ixfóáñávxŒôáe¸9fvcB3UölñeUfxvzveffb#1!˝!3¸&´ïhYGv¶xßàwôÓ©ávQ!˛8˛%VfVBDVkã¶VVfiwzáVEVf3¸#6´àòYvgáxóõ™åÓ©òge˝;VfwvUUe{öµeUfjÜä©veUÜ2˛!˛!"!˝VÀàñáܲw    ß¨ŸôÓ€πÜvQ˛8˛EgwvEUUlö®UVVzò3$TEfB˚!˛G´Vgxáxxòóáw|fi‹©àgb˛8˛VgàÜeegW∫®eev´1!!2%eUC˙!"1˛g‹xßv∏àòó«à©º∂S2XÜr!!;˛FgzÜefjW™®eVhíUCz»f"˛!gVgxfôòáx∏xá∑C##"iT˛<˛Ugãñefve∫™vew&eUffA'gòr˛!"˛!1˛wvÜvgxàóx«|›weUS36S1!!;VgåffgwXÀ´ffh<VfgghVe2¸"%iòàfgHàáy®õΩ˛ÕfifiÉ33#9!fwãvwvxz ºfvÑáfá∫x|íf3A˝!˝"˛Ex⁄àñiXàáâ©Ωœ˛ˇ˛ÏÈCS33F<12wwåwxvzhÀ¨fgÉGxùflàx¥R5B""#WyÀyiXiäxòºúÆ˝ˇ»4ì3~ù<!TA%Vwúfwfòv ºgw£9˛ˇ˛Èæ“cUQ!!"22"B˛ fŸ∫®òπóâò¨úl˝ˇ§BïD®j=144$fWùfwfâgÀ¨Vg≤ÔÓÔÓfiísFR#3#"cVxôôx yßx}¨l˛ˇ˛•Rg4{¨=1DDffwÕwvvñáÀºwwb9Ô˝Óˇ›2tDD1""3D32r!#Vâôòá®àòóåÓÏ˛ˇ˛«af4ff=!##VUX≠xfWwgªºwwR;ÔEçÓ™*eEUF#$E2"R˛WhóòwÀ®xàâÀ¨ˇˇÃ›ì##VV=;235vg©óvfwÜ ªßw¢å˛B3K®%ueâá224TEcc!3ViôáóŸô®à™∫ÃˇˇÀÕíb3Tee=;TFh©vfwgfÀ´«x≥ÃˇÌcD3'∫àfâ##45G6E4Fàö©ó∏xôäº◊Õˇˇ˘úb$DVEE=;EUyßáávfàÀ∫«ã’[fiÓÂrC3{…F©33CFòïU!4f∫€ä®óàö∫™ˇÕˇˇ˙Ç34DR33<!4Vi®xâWjÀ´º{≠◊v≠µ233#©™∫334Gââg˛4FΩòz…πâö©õÕMˇÔ›sCCE˛"<Evâ•!â∏á|À´ºôº÷îVuCC3D∂vá˛CFò™f!DV<∏ó®⁄ ΩÃºΩæˇˇ˙t’TC˛2<8Egzìwwv|À™ºÕ›∫Å#44G¶wf3344HyT4W´ ® ™¨¨ººfiÃxÉTEU2˛"=;fyõ°!vvó|ÀªªÃÀQCCÜß∏áCCDCGäá!Dg#ò™∑ ™∫Àª›‹C323eS22"!<gwâ≤fwVåÀ´´ººÃ!áò™ò˛4D8âx!5Vââä ™∫™¨Õ›3##%#˝";{ò©Å2¶vv‹À∫∫ªÃ a¸$k™ößCCDTHòá!Db&à®õÀª…´ÃÀÃs22422"2"2: YâC©yx‹À˛´ º∫ë*ö™á˛4D8âv˛4Q7xö©™ôº´ª´ª¢""#¸"7$F!!$ππó‹À∫´ª∫∫Ÿ6™©ñ˛CTHôs!4ahàô¶∫™π´∫Àª¢""2˚"< Dâ™∏ê∫˝™q˛ööÖ˛4THâA˛4BYäô󲙴´™™ì""2˛"";#C!"'ô¨ª ªª∫∫™©q¸"z™Ñ˛CTàï!˛DBißöß©™ª∫∫¨∫í22R2"!""292öô´ªº´™´´öq˚ôT˛4 Dà14Ciyy˝™´º™™r""R˛""9"2!"x®âªªÃÀ∫∫™™ë!˛!(d˛DTQ¸
  2987. CC;òôâ™™∫∫©™πǸ"2""!93""yàõöªºª™´∫©í4D4!%36òâôôö´™õ∫ôb¸"˛/!"3A"wö©ªª‹Àªª∫©¢˝!Ú
  2988. 5Ctòò™ªªÀªπ©©b˛"!˛"!"4T2xôä™´‹ºª™™öÇ˝˛¯$T89âyöºÀ´™™ôB"˛˛"/!!3CB"òà™´ªÌÀ∫™∫™b˛!Ò#G\©ôªÀÃÃ∫©™®R"2˛"2"2!.43Bâô´õ¨›Ã∫´™™2˛ÙFª™ôöõΩ∫ºööô2˙"1!!#E1"ôô∫™ÃÓÃ∫ª∫∫b"!˚˝ "Gª©©´ÀΩ º ™®˜"-"ôö™õÕfiô∫´ªr"Ú 8´ö™™´æ™´´™ò˚"#˛"2!!˛"$ôöπ´›’‹∫ªÀª¢"!˙¯"F´™π™ª≈À™ ∫©232"2""˛2/"""ôöö≠Ցô™´ºí#¯˛2ª˝™§Àöª™™#¯"8""˛!'ô™™ºÕ“ÃÀ∫ÀÀ¢!!˚
  2989. #iª«àµ"3Ã˝∫
  2990. ¥€∫º™®32#"2˝"28¸
  2991. âô™Ãլô™ªº¢˛$C'ÜS!%Ù™´´ì‹™ºªñ˛"2""˝/¸!'ô™´ÃÕR‹∫ªÃâ2!¸ˆ8⁄ª∫ºÀc‹ ºÀ§2"2"#"2˛".¸♨ÃÕ"º´´ÃÀì"!Ú9À´™¨ª3‹ª¨Ã§33#""#˛"=""!""&â™À‹◊"¨ªªÃ€Ç"!˛ J‹ª∫ªÃ2ÏÀºÀ¥C33B22""2"/˛"âõªº√å´ªÕÃr"Jô´¨À"›À¨ª§4434"$""#;˛!˛"
  2992. ô´Ã‹“!{Àª‹‹B2!˛˛˛[‹ª∫º…3‹‹ªÀ≥3C332"B22"."˝#ö¨ÃÃ√"lªº‹ÃC#!Ò[ú´ºµ#›Õ…™§33##3"$˛"3"23233öÀË≥B\ÃÛ‹dB!ˆ˛ k€Ã∫ª¬"›‹Ã∫§3¸2#R"2/3#33#$öºÃÃÑ3LúÃÃVU!jÃê´ΔUfiÃÙs#3#3343D""9˝3B4´ÃËtTLÃË›fe1˛˛˝z⁄¨Ã‹’D›Ì‹™tUUTDUUTCS3. #4S"#7´¨ÃÃTEl˛ÃÕfU!ÔiúÃÕπá››ÃäeUED4DDE3EC723DEUX´ºÃÃuvåÀËáv!˙˛˛˛
  2993. h‹º›‹fiŸfiÌ‹®˛vf˝efvt+"##")õ¨ºÕT4LªªÃÃE4Ú
  2994. IÕ¨ÃÃwe››ÃôD34˘32¸"7´´Ã‹dCKÀªÃ‹Ue!ˆ˛[‹ÀÃÃff›ÌÏ∑CC3˛C33CC2-"˛"&öö´ÃC#:™´ÃÃUDÔLÃ˛ª
  2995. UUÕfiî433#3˝#43%˜˛!Ô KÀ™ª∑UTË€òC˝32323CBÓ˛˛˜ı¸""˚˛˛ˆÈ«ˆÍ    ˙˛Ú˛fi)˝˛˛˛ˆ˛˛ˆ˝—˛˛˛¸˛¸⁄˚)˚!˙!˚˛˝˛!˙!˛!!¸* xâöì"'˛ôí##"ÚFffU3¸#"˘/˚!â´À√!"*ÀÛ¬221¯"}›‹»TTD\À››c33˝2˝".˛â™Ã¬ªº›r""!]›‹ΔUUEGºªöÉ3#"#"""6¸!"i™›“˛"kº”223!˛˛¸
  2996. "}›Ï÷ueUUÌ‹∑c3˛2˝"2"-˝I¶""""#C#""ÚlÕ›ΔUEEV›‹®C3##˚"0˝!!"©˝"!"S322!˙˛˝"UXŸeUeefyc!$C3˝2˝",˚∂""BT#""Ú32#UUVVgó3""3˝"":!˛!5dB2""a!(D22!˛˛!"2"6eeVefôc!!3˚2"2".GS#"#T3#!Ú"U˛EUVh§"##˚"#5!!! 5ÜdB22!"feC1¯˝#B"eUTTDTfv2!#C2""22""21˛(UD43#WVD2ÛT$DEDEDUUWC#343"#˛"#";!!"!4#FT3CC2!"4vfdQ!˝!&vufeUTUDTTdeCCD22"3˛22˛"%xHc4˛#3"yWvUUBÙ&gfVVEDVDD4D˛4D#3#3#"";!!""#wd2"2233Gº∂UeDB!˛˛!6efeUTd˛TDDTDS¸CB230˝##3"##3$343$DDBÙ&UEEUDEUE345E˝4DD43##5¸"32˛"3CD4˛CDUS!˝¸!"5ee˛UT¸D
  2997. TDTUCTCDCC21"""""#4D4CD4DED˛ˆ EVUUETEEDD˚43D45E44<!"!2""!˛"
  2998. 3CC"TDDETT!˛˝!"UfUeUTeDTDTDCDCC˛DTTST/˘##44DD˝4T1ˆ˛UE˛UDUDDEDD4˛3D˛4D8"2"!"!˛"3CSD4DT˛DTA˚¸!$feef˛eUedDUTCSCCTUUTDC4#""˛344DD4DEE˛D2¯˛ff¸VUUD˛4    EE34D4EDD3<32"2˛"23C3eDSDTTDCDC!˛˝!%vveUfeeUUcC3T3dCCDCEUTD4"˝$32#C#CDDEEDEDF4ˆEf˛V
  2999. fUefUT334DE˛D4EUDD5"!˛"#3D33DD˝UTDDTS!˛˘!"Ufv¸eUdTC3˛DTETTSDTT4˝"$D53C34DD5EU4D4T!¯FffUVUVTEUD˛3433545E˛4= !!""232CC23DD˛CDDTTSA˛!%fvfufeeUTUT3CC3CDC3TTDCC5˛"#˝3    #"43343434˛D"¯FgffUeUUDED433434#3$˛D452""3CC˛2
  3000. 3CB233C3CEee4!ˆ!efvuffeeUdedCC3CCDCC4DUUC7 ""##"#33433˝#334U3˛¸E˝f    VUVeUUD33D˛434#3˛49˛" 232332232"32˝3˛CA˛˛!%Uve˛fvdTUUSCD˛C3C3C2˛32"˚#433##"#"#323533#˙4VVeVVffUFDUCDD4˚3#˛36 2C32233233C3˝23234CC3!¯!TWfeevffeedTSEC4D˛CDC22C34
  3001. 33433443$3443#˛34D4Ed3Q˙ EGfVUUVfVVU˝D4¸3#˝37DTSCC3CDCTCC3DS3¸DTC1˚#UveedUeVeeTTDD˛T˛DTDCCDC8$344C3#˛4D434344D44DE3&˚    dEvUUEEU˛E    TEDUE44DDE˛D˛4
  3002. d
  3003. °dONLNd0®¥á(–#GARY WOODCOCK AND°dONLNdB¥¿J*
  3004. CASEY KING, Palatino
  3005. °dONLNdMáñïÏ(∞¥:Programmers first saw the Component Manager as part of the°dONLNdàôñßfl*6QuickTime 1.0 system extension. Now that the Component°dONLNdø´ñπ–*9Manager is part of System 7.1, components aren’t just for°dONLNd˘ΩñÀ*=QuickTime programmers any more. This article shows you how to°dONLNd7œñ›*Btake advantage of the power and flexibility of components as a way°dONLNdz·ñÔ„*<to give extended functionality to any Macintosh application.
  3006. °dONLNd∑
  3007. ñ*+OSoftware developers are continually searching for ways to avoid reinventing the°dONLNdñ% * Pproverbial wheel every time they need new capabilities for their programs. A new°dONLNdX%ñ1* Napproach is available with components. Components are modules of functionality°dONLNdß1ñ=˝* Othat applications can share at run time. They enable applications to extend the°dONLNd˜=ñI˛* Oservices of the core Macintosh system software with minimal risk of introducing°dONLNdGIñUè* 7incompatibilities (unlike, for example, trap patching).°dONLNdÄañmÓ*LAs Figure 1 suggests, components also encourage a building-block approach to°dONLNdÕmñyfi* Fsolving complex problems. Higher-level components can call lower-level°dONLNdyñÖ* Ncomponents to build sophisticated functionality, while at the same time making°dONLNdcÖñëÛ* Jthe application program interface (API) much simpler. What’s more, because°dONLNdÆëñù* Ncomponents are separate from an application that uses them, you can modify and°dONLNd˝ùñ©à* 4extend components without affecting the application.°dONLNd2µñ¡*LComponents are maintained by the Component Manager, which is responsible for°dONLNd¡ñÕ* Qkeeping track of the components available at any given time and of the particular°dONLNd—ÕñŸı* Jservices they provide. The Component Manager provides a standard interface°dONLNdŸñ¸* Mthrough which applications establish connections to the components they need.°dONLNdjÒñ˝*NAlmost anything you can dream up can be a component — video digitizer drivers,°dONLNdπ˝ñ    * Sdialogs, graphics primitives, statistical functions, and more. QuickTime 1.0 itself°dONLNd
  3008.     ñ * Tcontains a number of useful components, including the movie controller, the sequence°dONLNdbñ!∂* ?grabber, and a variety of image compressors and decompressors (°dONLNd°∂!“(=‘codecs°dONLNdß“!Ù)    ), all of°dONLNd±!ñ-j(I¥.which are available to any client application. x9x!,Times
  3009. ({% 
  3010. +
  3011. 7
  3012. (è¥GARY WOODCOCK AND CASEY KING)í have a(ô¥9long history of collaboration. They first met at a flight*
  3013. /simulation company in the early 80’s where they*
  3014. 4worked together on designing a multimillion-dollar F)Ø-(∑¥416 jet fighter simulator (and you thought Falcon was*
  3015. 6cool!). They parted ways temporarily, but regrouped at*
  3016. 5Apple to join forces in what colleague Jim Batson has*
  3017. 4termed the “QuickTime sleep deprivation experiment.”(èu1They’re both currently working on RISCy products,*
  3018. 0but from different parts of the country (Gary in*
  3019. 0Cupertino, and Casey in the new PowerPC mecca of*
  3020. 1Austin, Texas). With his wife Lonna, Casey is the*
  3021. 3proud co-owner of his latest obsession — a year-old*
  3022. 2baby boy named Brian — but he still makes time for*
  3023. 6mountain biking, hiking, and flying. Gary still spends*
  3024. 7much of his time diligently testing video capture cards*
  3025. for
  3026. (Ú80TECHNIQUE FOR WRITING AND DEBUGGING COMPONENTS  
  3027. )Œ
  3028. December 1992ˇ(~◊#ˇ ˇˇˇˇ#◊ 
  3029. 6¥ì"6¥°d
  3030. ONLNfH"ì°d
  3031. ONLNfàñ†Ç†é
  3032. 45≥6¥ò.@l@l6¥v”””
  3033. ÓÙˇÄı
  3034. ÓÙˇÄı
  3035. ÓÙˇı
  3036. ÓÙˇı
  3037. ÓÙˇı
  3038. ÓÙˇı
  3039. ÓÙˇı
  3040. ÓÙˇı
  3041. ÓÙˇı
  3042. ÓÙˇı
  3043. ÓÙˇı
  3044. ÓÙˇı
  3045. ÓÙˇı
  3046. ÓÙˇı
  3047. ÓÙˇı
  3048. ÓÙˇı
  3049. ÓÙˇı
  3050. ÓÙˇı
  3051. ÓÙˇı
  3052. ÓÙˇı
  3053. ÓÙˇı
  3054. ÓÙˇı
  3055. ÓÙˇı
  3056. ÓÙˇı
  3057. ÓÙˇı
  3058. ÓÙˇı
  3059. ÓÙˇı
  3060. ÓÙˇı
  3061. ÓÙˇı
  3062. ÓÙˇı
  3063. ÓÙˇı
  3064. ÓÙˇı
  3065. ÓÙˇı
  3066. ÓÙˇı
  3067. ÓÙˇı
  3068. ÓÙˇı
  3069. ÓÙˇı
  3070. ÓÙˇı
  3071. ÓÙˇı
  3072. ÓÙˇı
  3073. ÓÙˇı
  3074. ÓÙˇı
  3075. ÓÙˇı
  3076. ÓÙˇı
  3077. ÓÙˇı
  3078. ÓÙˇı
  3079. ÓÙˇı
  3080. ÓÙˇı
  3081. ÓÙˇı
  3082. ÓÙˇı
  3083. ÓÙˇı
  3084. ÓÙˇı
  3085. ÓÙˇı
  3086. ÓÙˇı
  3087. ÓÙˇı
  3088. ÓÙˇı
  3089. ÓÙˇı
  3090. ÓÙˇı
  3091. ÓÙˇı
  3092. ÓÙˇı
  3093. ÓÙˇıò.@Äl@Älv¥∂
  3094. ÓÙˇı
  3095. ÓÙˇı
  3096. ÓÙˇı
  3097. ÓÙˇı
  3098. ÓÙˇı
  3099. ÓÙˇı
  3100. ÓÙˇı
  3101. ÓÙˇı
  3102. ÓÙˇı
  3103. ÓÙˇı
  3104. ÓÙˇı
  3105. ÓÙˇı
  3106. ÓÙˇı
  3107. ÓÙˇı
  3108. ÓÙˇı
  3109. ÓÙˇı
  3110. ÓÙˇı
  3111. ÓÙˇı
  3112. ÓÙˇı
  3113. ÓÙˇı
  3114. ÓÙˇı
  3115. ÓÙˇı
  3116. ÓÙˇı
  3117. ÓÙˇı
  3118. ÓÙˇı
  3119. ÓÙˇı
  3120. ÓÙˇı
  3121. ÓÙˇı
  3122. ÓÙˇı
  3123. ÓÙˇı
  3124. ÓÙˇı
  3125. ÓÙˇı
  3126. ÓÙˇı
  3127. ÓÙˇı
  3128. ÓÙˇı
  3129. ÓÙˇı
  3130. ÓÙˇı
  3131. ÓÙˇıÁÓÁÓÁÓÁÓÁÓÁÓÁÓÁÓÁÓÁÓÁÓÁÓÁÓÁÓÁÓ
  3132. ÓÙˇÄı
  3133. ÓÙˇÄı
  3134. ÓÙˇı
  3135. ÓÙˇı
  3136. ÓÙˇı
  3137. ÓÙˇı
  3138. ÓÙˇı
  3139. ÓÙˇı
  3140. ÓÙˇı
  3141. ÓÙˇı
  3142. ÓÙˇıò.Ä¿lÄ¿l∂¥ı
  3143. ÓÙˇı
  3144. Û͡‡˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙Û˝Ùˇ˝ ˙
  3145. ÛÍ ˙
  3146. ÛÍ ˙
  3147. ÛÍ ˙
  3148. ÛÍ ˙
  3149. ÛÍ ˙
  3150. ÛÍ ˙
  3151. ÛÍ ˙
  3152. ÛÍ ˙
  3153. ÛÍ ˙
  3154. ÛÍ ˙
  3155. ÛÍ ˙
  3156. ÛÍ ˙
  3157. ÛÍ ˙˘Ùˇ¯¯Ùˇ˘Ùˇ¯¯Ùˇ˘Ùˇ¯¯Ùˇ˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˘Ùˇ˛¯Ùˇ‡˙Úˇ¸˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙ÄÙˇ˛˘Ùˇ‡˙Äıˇ˛˘Ùˇ‡ò.¿ÿl¿ÿlı¥
  3158. ˙Äıˇ˛˘Ùˇ‡˙Äıˇ˛˘Ùˇ‡˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙˙ÄÛÚ ˙ıˇ˛ÙˇÙˇıˇ˛ÙˇÙˇÙˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡òÅl@lHH‡µ¥ÇIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  3159. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  3160. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  3161.  
  3162.  
  3163.  ˛êêê@l6¥v'ÅÅïÅÅïÅÅïʼnïˇûsʼnkˇˇûtʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇˇˇˇˇˇˇˇ˝ˇ°sʼnCˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ˛ˇ˛ˇ˝ˇ°tʼnjˇˇˇˇˇ˛ˇˇˇ˛ˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇˇˇˇˇ˛˝ˇ°rʼn)ˇˇˇˇˇˇˇˇˇˇ˝ˇˇ˝ˇ3ˇˇˇˇˇˇˇˇˇˇˇ˝ˇ°tʼnjˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ°tʼnjˇˇˇˇˇ˛˛ˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇ˝ˇ°tʼnjˇˇ˝ˇ°tʼnjˇˇˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇˇˇˇˇ˝ˇ°tʼn&ˇˇˇ˛ˇ˛ˇ<ˇˇˇˇˇˇˇˇ˛ˇ˛ˇˇ˛˝ˇ°tʼnjˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ°tʼnjˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ°tʼnjˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇ˛ˇ˛ˇ˝ˇ°tʼn"ˇ˛ˇ˛ˇ˛ˇ    ˇˇˇˇ˛ˇ/ˇˇˇˇˇˇ˝ˇ°tʼnjˇˇˇ˝ˇ°tʼnjˇˇˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇˇˇ˝ˇ°sʼn2ˇ˝ˇ3˝ˇ°tʼnjˇˇˇˇˇ˝ˇ°sʼn2ˇˇˇ˝3ˇˇ˝ˇ°qʼn1ˇˇˇ˚2ˇˇ˝ˇ°oʼn0ˇˇˇ˘1ˇˇ˝ˇ°lʼn,ˇ˛ˇ˜0ˇˇ˝ˇ°jʼn-ˇˇˇÙ/ˇˇ˝ˇ°hʼn,ˇˇˇÚ.ˇˇ˝ˇ°fʼn+ˇˇˇ-ˇˇ˝ˇ°dʼn*ˇˇˇÓ,ˇˇ˝ˇ°bʼn)ˇˇˇÏ+ˇˇ˝ˇ°`ʼn(ˇˇˇÍ*ˇˇ˝ˇ°^ʼn'ˇˇˇË)ˇˇ˝ˇ°`ʼn&ˇˇˇÒ˚ˇ¸(ˇˇ˝ˇ°òÅl@ÄlHH‡µPÉIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  3164. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  3165. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  3166.  
  3167.  
  3168.  ˛êêê@Älv¥∂'cʼn%ˇˇÚ˛ˇ˝ˇˇ¸'ˇˇ˝ˇ°eʼn&ˇˇˇÙˇˇ˙ˇˇ˝'ˇˇ˝ˇ°eʼn'ˇˇˇı¸ˇ¸,ˇˇˇˇ˝ˇ°cʼn(ˇˇˇ˙Ûˇ˝ˇ'˝ˇ°cʼn)ˇˇˇ˚Ûˇ¸ˇ%˝ˇ°gʼn*ˇˇˇ¯ˇ˘ˇ¸ˇ%˝ˇ°eʼn+ˇˇˇ˘ˇˇ˜¸ˇ%˝ˇ°eʼn,ˇˇˇ˘˛ˇ˘¸ˇ%˝ˇ°fʼn-ˇˇˇ¯˘ˇ¸ˇ%˝ˇ°gʼn.ˇˇˇıˇˇ˙ˇ%˝ˇ°jʼn/ˇˇˇ˜ˇˇ˚ˇ%˝ˇ°mʼn0ˇˇˇ˘ˇˇ¸ˇ%˝ˇ°pʼn1ˇˇˇ˚ˇˇ˝ˇ%˝ˇ°sʼn2ˇˇˇ˝3ˇˇ˝ˇ°tʼnjˇˇˇˇˇ˝ˇ°sʼn2ˇ˝ˇ3˝ˇ°tʼnjˇˇˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°tʼnjˇ˝ˇ°Å‰íˇ°Å‚îˇ°Å‚îˇ°
  3169. ÅÆˇÅÈ
  3170. ÅÆˇÅÈ
  3171. ÅÆˇÅÈ
  3172. ÅÆˇÅÈ
  3173. ÅÆˇÅÈ
  3174. ÅÆˇÅÈ
  3175. ÅÆˇÅÈ
  3176. ÅÆˇÅÈ
  3177. ÅÆˇÅÈ
  3178. ÅÆˇÅÈ
  3179. ÅÆˇÅÈ
  3180. ÅÆˇÅÈ
  3181. ÅÆˇÅÈ
  3182. ÅÆˇÅÈ
  3183. ÅÆˇÅÈʼnïˇûsʼnkˇˇûtʼnjˇ˝ˇ°tʼnˇ˛ˇPˇˇ˝ˇ°sʼn ˇˇˇˇˇ˝ˇˇˇˇ˛ˇ ˇˇˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇ˝ˇ°tʼnjˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˝ˇ°mʼnˇˇˇ¸ˇˇˇˇ¸ˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇ¸ˇ˝ˇ°tʼnjˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ°tʼnˇ˛ˇˇ˛ˇ˛˛ˇ ˛˛ˇˇˇˇˇˇˇˇ˛ˇˇˇ˛˛ˇ ˛ˇˇ˛˛ˇˇ˝ˇ°tʼnjˇˇˇ˝ˇ°tʼnjˇˇˇˇ˝ˇ°òÅlÄ¿lHH‡µ¥ÑIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  3184. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  3185. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  3186.  
  3187.  
  3188.  ˛êêêÄ¿l∂¥ı'tʼnjˇ˝ˇ°sãŸˇiˇˇˇˇˇˇˇ÷ˇ»xãˇ€ˇˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇˇ˛ˇ˛ˇ    ˇˇˇ˛ˇˇˇˇˇ˛ˇˇˇ˝ˇ€ˇ»zãˇ€jˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˝ˇ€ˇ»vãˇ€)ˇˇˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇˇˇˇˇˇˇ¸ˇˇ˛ˇˇˇˇˇˇ˝ˇ€ˇ»zãˇ€jˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ€ˇ»zãˇ€Lˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇ˛ˇ˛˛˛ˇˇ˛ˇˇˇˇ˛ˇˇˇ˛ˇ˛ˇˇ˝ˇ€ˇ»zãˇ€jˇˇˇˇˇˇˇ˝ˇ€ˇ»zãˇ€jˇˇˇˇˇˇˇˇˇ˝ˇ€ˇ»zãˇ€jˇ˝ˇ€ˇ»zãˇ€jˇ˝ˇ€ˇ»zãˇ€jˇ˝ˇ€ˇ»zãˇ€jˇ˝ˇ€ˇ»ãˇ€íˇ€ˇ»ãˇŸîˇ€ˇ»ãˇŸîˇ€ˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ» ãˇÅΔˇ»
  3189. ¡îˇ≤ïˇ˝·¡lˇˇˇ≤kˇˇ˝·¡lˇˇ≤kˇˇ˝„¡kˇ˛ˇ¥jˇ˝ˇ„¡kˇ˛ˇ¥jˇ˝ˇ„¡ ˇ˛ˇ\ˇˇˇˇ˛ˇ¥
  3190. ˇ˛ˇ\ˇˇˇ˝ˇ‡¡ˇˇˇˇˇ˝ˇˇˇˇ˛ˇ ˇˇˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇ˛ˇˇˇˇˇ˛ˇ¥ˇˇˇˇˇ˛ˇˇˇˇˇ˛ˇ
  3191. ˇˇˇˇ¸ˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇ˝ˇ„¡kˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ˇˇˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇ˛ˇ˛ˇˇ˛˛ˇ¥9ˇˇˇˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛˛ˇ˛˛ˇ-ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˝ˇ“¡
  3192. ˇ˚ˇ    ˇˇˇˇ¸ˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇ¸ˇ ˇˇˇˇ¸ˇˇˇ˛ˇ¥ˇˇˇ¸ˇˇˇˇ¸ˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇ¸ˇ!ˇˇˇˇˇˇˇˇˇˇ˝ˇ„¡kˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ¥jˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ„¡ ˇ˛ˇˇˇˇ˛˛ˇP˛˛ˇˇˇˇˇˇˇˇ˛ˇˇˇˇ˛ˇˇ˛ˇˇ˛˛ˇˇˇ˛ˇ˛ˇˇ˛˛ˇ˛ˇ¥;ˇ˛ˇˇˇˇˇˇ˛ˇˇ˛ˇ˛ˇ˛˛ˇ˛ˇˇ˛ˇˇˇˇ˛˛ˇ+ˇˇ˛ˇ˛ˇ˛˛ˇ˛ˇˇ˛ˇˇˇ˛˝ˇ„¡kˇˇˇ˛ˇ¥jˇˇˇ˝ˇ„¡kˇˇˇˇ˛ˇ¥jˇˇˇˇ˝ˇ„¡kˇ˛ˇ¥jˇ˝ˇ„¡kˇˇˇˇ˛ˇ¥jˇˇˇˇ˝ˇfl¡ˇˇˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇ¥ˇˇˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˝ˇ„¡kˇˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇ¥jˇˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇ˛˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇˇˇˇ˝ˇfl¡(ˇˇˇˇˇˇˇˇˇˇˇ˝ˇ ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˛ˇ¥)ˇˇˇˇˇˇˇˇˇˇˇ˝ˇ ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˝ˇ„¡kˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ¥jˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ„¡kˇ˛ˇˇˇ˛ˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇ¥ˇ˛ˇˇˇ˛ˇ ˛ˇˇˇˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ%ˇˇˇ˛ˇ˛ˇˇ˛˝ˇ„¡kˇˇ˛ˇ¥jˇˇ˝ˇ‰…¯ˇjˇ˜ˇªjˇˇ˝ˇÎ…ˇ˙kˇ˛ˇ˚ˇªjˇ˝ˇÎ…ˇ˙kˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˚ˇªjˇˇˇˇˇˇˇˇˇˇˇ˝ˇÎ…ˇ˙    ˇˇ˛ˇ˛ˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇ˛ˇˇˇˇ˛ˇˇˇˇˇˇ˛ˇˇˇˇˇ˛ˇ˚ˇªˇˇ˛ˇ˛ˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˝ˇÎ…ˇ˙kˇˇˇ˛ˇˇˇˇˇ˛˛ˇ˛ˇ˛ˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˚ˇªjˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˝ˇ‚…ˇ˙ˇˇˇˇˇˇ¸ˇ1ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ¸ˇ ˇˇˇˇ¸ˇ
  3193. ˇ˛ˇ˚ˇªˇˇˇˇˇˇˇ˝ˇ0ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇˇˇˇˇˇˇˇ˝ˇÎ…ˇ˙kˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˚ˇªjˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇÎ…ˇ˙ˇˇ˛ˇ˛ˇ(ˇˇˇˇ˛ˇˇ˛ˇ˛˛ˇ˛ˇˇ˛ˇ,ˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˚ˇªjˇ˛ˇˇ˛ˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇˇ˛ˇˇ˝ˇÎ…ˇ˙kˇˇˇˇˇˇˇˇˇ˛ˇ˚ˇªjˇˇˇˇˇˇˇˇˇ˝ˇÎ…ˇ˙kˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˚ˇªjˇˇˇˇˇˇˇˇˇˇˇ˝ˇÎ…ˇ˙kˇ˛ˇ˚ˇªjˇ˝ˇÎ…ˇ˙kˇ˛ˇ˚ˇªjˇ˝ˇ…ˇ˙íˇ˚ˇªíˇ…ˇ˜ïˇ˚ˇ∏ïˇòÅl¿ÿlHH‡µPÖIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  3194. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  3195. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  3196.  
  3197.  
  3198.  ˛êêê¿ÿlı¥
  3199. '…ˇ˜ïˇ˚ˇ∏ïˇ…ˇ˜ïˇ˚ˇ∏ïˇ…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»…ˇÖˇÖˇ»˛ïˇÒîˇÒïˇ˝P˛kˇˇÒlˇˇÒkˇˇ˝S˛jˇ˝ˇÙkˇ˛ˇÛjˇ˝ˇS˛jˇ˝ˇÙkˇ˛ˇÛjˇ˝ˇS˛jˇˇˇˇˇˇˇˇˇˇ˝ˇÙkˇˇ˛ˇÛjˇ˝ˇN˛$ˇˇˇˇ˛ˇ ˇˇˇˇ˛ˇˇ˛ˇˇ˛ˇ˛ˇ"ˇˇˇˇ˝ˇÙˇ˚ˇˇˇ˛ˇˇˇˇˇˇˇ¸ˇ˛ˇ+ˇˇˇˇˇˇˇˇˇˇ˛ˇÛjˇ˝ˇS˛jˇˇˇˇ˛ˇˇ˛ˇ˛˛ˇˇˇˇˇˇˇˇˇ˛ˇ˝ˇÙkˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇ˛ˇ˛˛˛ˇˇ˛ˇÛjˇ˝ˇò.@l@l
  3200. ¥MÙˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿Ùˇ¸Ùˇ‡Ùˇ¿ıˇ¸Ùˇ‡Ùˇ¿ıˇ¸Ùˇ‡
  3201. ˙Ä„ ˙
  3202. ˙Ä„ ˙
  3203. ˙Ä„ ˙
  3204. ˙Ä„ ˙
  3205. ˙Ä„ ˙
  3206. ˙Ä„ ˙
  3207. ˙Ä„ ˙
  3208. ˙Ä„ ˙
  3209. ˙Ä„ ˙
  3210. ˙Ä„ ˙
  3211. ˙Ä„ ˙
  3212. ˙Ä„ ˙
  3213. ˙Ä„ ˙
  3214. ˙Ä„ ˙ıˇ˛Ùˇıˇ˛Ùˇıˇ˛ÙˇÙˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡ò.@Äl@ÄlM¥çÙˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡ò.Ä¿lÄ¿lç¥ÕÙˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡Ùˇ¿ÒÙˇ‡”””””””””””””””””””””””””””””””””””””””””””””””””””””””””””ò.¿ÿl¿ÿlե””””””””””””””””””””””””òÅl@lHH‡µ¥ÜIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  3215. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  3216. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  3217.  
  3218.  
  3219.  ˛êêê@l
  3220. ¥M'L˛(ˇˇˇˇˇˇ¸ˇˇˇˇˇˇˇˇˇˇˇ¸ˇ˝ˇÙ%ˇˇˇˇˇˇˇˇˇ¸ˇˇˇˇˇˇˇˇˇˇ˝ˇ#ˇˇˇˇˇ˛ˇÛjˇ˝ˇS˛jˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇÙkˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÛjˇ˝ˇS˛:ˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇ,ˇ˛ˇˇ˛ˇ˛ˇˇ˝ˇÙˇ˛ˇˇˇ˛ˇIˇˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˛ˇÛjˇˇ˛ˇ˛ˇˇ˝ˇQ˛jˇˇ˝ˇÙkˇˇˇ˛ˇÛ-ˇˇˇˇˇˇˇ˛ˇ˛ˇ¸ˇˇˇ˛ˇ!ˇˇ˝ˇS˛jˇˇˇ˝ˇÙkˇˇˇˇ˛ˇÛjˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇS˛jˇ˝ˇÙkˇ˛ˇÛGˇˇ˛ˇˇˇ˛ˇˇˇˇˇˇˇˇ˛ˇˇ˛˛ˇ˝ˇS˛jˇˇˇˇˇˇˇˇˇ˝ˇÙkˇˇˇˇˇˇˇˇ˛ˇÛjˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇI˛ˇˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇˇ˛ˇ˛ˇ
  3221. ˇˇˇˇ¸ˇ˝ˇˇ˝ˇÙˇˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇˇ˛ˇ˛ˇ
  3222. ˇˇˇˇ¸ˇˇˇˇˇˇˇ˛ˇÛˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˝ˇ,ˇˇˇˇˇ˝ˇS˛jˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇ˛˛˝ˇÙkˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇÛjˇ˝ˇL˛)ˇˇˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇˇˇˇˇˇˇˇ˝ˇ!ˇˇˇˇˇˇˇˇ˝ˇÙ(ˇˇˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇˇˇˇˇˇˇ¸ˇ$ˇˇˇˇˇˇˇˇ˛ˇÛjˇ˝ˇS˛jˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇÙkˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÛjˇ˝ˇS˛ˇˇˇˇˇˇ˛ˇ˛ˇJˇˇˇˇˇ˛ˇ˛˛˛ˇˇ˛ˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇ˝ˇÙkˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇÛjˇ˝ˇS˛jˇˇˇˇˇˇˇ˝ˇÙkˇˇˇˇˇˇ˛ˇÛjˇ˝ˇS˛jˇˇˇˇˇˇˇˇˇ˝ˇÙkˇˇˇˇˇˇˇ˛ˇÛjˇ˝ˇS˛jˇ˝ˇÙkˇ˛ˇÛjˇ˝ˇS˛jˇ˝ˇÙkˇ˛ˇÛjˇ˝ˇS˛jˇ˝ˇÙkˇ˛ˇÛjˇ˝ˇ˛íˇÙíˇÛíˇ¸îˇÚîˇÒîˇÚîˇÒîˇ …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» …ˇÅàˇ» ˛ïˇÅÙïˇ˝‚˛kˇˇÅÙkˇˇ˝‚˛kˇˇÅÙkˇˇ˝‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‡˛jˇ˝ˇÅ˜+ˇ˙ˇ7˝ˇ›˛jˇ˝ˇÅ˜+ˇˇˇˇˇˇˇ˜ˇ4˝ˇ·˛jˇ˝ˇÅ˜"ˇ¸ˇ    ˇˇ˝ˇ4˝ˇ‰˛jˇ˝ˇÅ˜jˇˇˇ˝ˇ„˛jˇ˝ˇÅ˜2ˇ˝ˇ3˝ˇ·˛8ˇ˚ˇ+˝ˇÅ˜jˇ˝ˇfl˛8ˇˇ˚+ˇ˝ˇÅ˜2ˇ¸ˇ2˝ˇfl˛7ˇˇ˘*ˇ˝ˇÅ˜3ˇˇ˛3ˇ˝ˇ‹˛&ˇ¯ˇˇ˝ˇˇ˝)ˇˇ˝ˇÅ˜3ˇˇ˛3ˇ˝ˇÃ˛%ˇÒˇÙ'ˇ˝ˇÅ˜3ˇˇ˛3ˇ˝ˇœ˛%ˇ¸ˇÙˇˆ&ˇ˝ˇÅ˜3ˇˇ˛3ˇ˝ˇŒ˛%ˇ¸ˇÙˇı%ˇ˝ˇÅ˜3ˇˇˇ˛3ˇˇ˝ˇÃ˛'ˇ˛ˇÙˇı%ˇ˝ˇÅ˜/ˇ˝ˇ˛˝ˇ/˝ˇòÅl@ÄlHH‡µPáIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  3223. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  3224. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  3225.  
  3226.  
  3227.  ˛êêê@ÄlM¥ç'—˛*ˇˇÙˇı%ˇ˝ˇÅ˜-ˇ˛ˇˇ˛ˇ˛ˇ-˝ˇœ˛*ˇˇÙˇı%ˇ˝ˇÅ˜.ˇˇˇ˝ˇˇˇ˝.ˇ˝ˇÀ˛)ˇ˙ˇ˙ˇı%ˇ˝ˇÅ˜-ˇˇ¸˝ˇ¸.ˇˇ˝ˇÃ˛0ˇˇˇ˚ˇˇı%ˇ˝ˇÅ˜-ˇˇˇÚ-ˇˇ˝ˇ¡˛$ˇ˝ˇ˝ˇÏ%ˇ˝ˇÅ˜,ˇˇˇ,ˇˇ˝ˇƒ˛'ˇˇ˝ˇ˝˙ˇˇˇˆ%ˇ˝ˇÅ˜+ˇˇˇÓ+ˇ˝ˇø˛'ˇˇ˝ˇ˛ıˇ˜%ˇ˝ˇÅ˜*ˇˇÌ+ˇ˝ˇ√˛'ˇˇ˝ˇ˝˝ˇˇˇÛ%ˇ˝ˇÅ˜*ˇˇÌ+ˇ˝ˇ ˛'ˇˇ˝ˇ˝ˇˇ˛ˇ˛ˇ¯ˇ%˝ˇÅ˜*ˇˇÌ+ˇ˝ˇœ˛'ˇˇ˝ˇ˝ˇˇ˛ˇˇˇ˘ˇ&˝ˇÅ˜*ˇˇ¯˛ˇ˘+ˇ˝ˇ√˛'ˇˇ˝ˇÒ˙ˇ'˝ˇÅ˜*ˇˇ¯˛ˇ˘+ˇ˝ˇ≈˛'ˇˇ˝ˇÌˇ(˝ˇÅ˜*ˇˇ¯˛ˇ˘+ˇ˝ˇ«˛$ˇ˝ˇÌˇ)˝ˇÅ˜+ˇˇˇ˘ˇˇ¯+ˇ˝ˇŒ˛/ˇÒˇ*˝ˇÅ˜,ˇˇˇ˙ˇˇ˘,ˇˇ˝ˇ€˛jˇ˝ˇÅ˜,ˇˇ˙ˇˇ˘,ˇ˝ˇ›˛jˇ˝ˇÅ˜-ˇˇˇ˚ˇˇ˙-ˇˇ˝ˇfl˛jˇ˝ˇÅ˜.ˇˇˇ¸ˇˇ˚.ˇˇ˝ˇ‹˛jˇ˝ˇÅ˜-ˇ˛ˇ˜/ˇˇ˝ˇfl˛jˇ˝ˇÅ˜/ˇ˛ˇ˚˛ˇ.˝ˇfl˛jˇ˝ˇÅ˜1ˇ˘ˇ0˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜ˇ˛ˇMˇˇˇˇˇˇˇ˝ˇ‰˛jˇˇˇˇˇ˛ˇˇˇ˛˝ˇÅ˜9ˇ˛˛ˇˇˇ˛ˇˇ˛˛ˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇ˝ˇ‚˛"ˇˇˇ˛ˇ ˇˇˇˇ˝ˇ˝ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˝ˇÅ˜jˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ‰˛jˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇÅ˜ˇ˛ˇKˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ‰˛$ˇˇˇ˛ˇ˛ˇB˛ˇˇˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˝ˇÅ˜jˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇˇ˛˛ˇ˛ˇˇ˝ˇ„˛jˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇÅ˜ˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˛ˇˇ˝ˇˇˇ˛ˇˇˇˇ˛ˇ˝ˇ‚˛"ˇˇˇ˛ˇ ˇˇˇˇ˝ˇ˝ˇˇˇ˛ˇˇˇˇ˛ˇ˝ˇÅ˜jˇˇˇ˝ˇ‰˛jˇˇˇ˝ˇÅ˜jˇˇˇˇˇ˝ˇ‰˛jˇˇˇˇˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇˇ˛˝ˇ‰˛jˇˇˇ˝ˇÅ˜$ˇ˛ˇˇˇˇˇ˛ˇˇˇ˛ˇ-ˇˇˇˇ˝ˇ‰˛$ˇ˛ˇ    ˇˇˇˇ˛ˇ5ˇˇˇˇˇˇˇˇˇ˝ˇÅ˜*ˇˇˇ˛ˇ<ˇˇˇˇˇˇˇˇˇˇ˝ˇ‰˛jˇˇˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˝ˇÅ˜Aˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ˇ˛˛ˇ%˝ˇ„˛9ˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˝ˇ$˝ˇÅ˜jˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ„˛jˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇÅ˜)ˇˇˇ˝ˇ˛ˇˇˇ˛ˇ,ˇˇˇ˝ˇ‰˛<ˇˇˇˇ˛ˇˇˇˇ˛ˇˇ˛˛ˇ*ˇ˛˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇòÅlÄ¿lHH‡µ¥àIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  3228. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  3229. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  3230.  
  3231.  
  3232.  ˛êêêÄ¿lç¥Õ'‰˛jˇ˝ˇÅ˜jˇ˝ˇ‰˛jˇ˝ˇÅ˜jˇ˝ˇ ˛íˇÅ˜íˇ ¸îˇÅıîˇ ¸îˇÅıîˇÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïòÅl¿ÿlHH‡µPâIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  3233. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  3234. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  3235.  
  3236.  
  3237.  ˛êêê¿ÿlÕ¥Â'ÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅïÅÅï†è†É†ø
  3238. d,     Helvetica
  3239.     .°dONLNdàñìæ(Ø¥Figure 1°dONLNd    îñüT* ,Using Components as Software Building Blocks, Palatino
  3240. °dONLNd6±ñΩÊ*ITo demonstrate the all-around usefulness of components, we’ll examine the°dONLNdÄΩñ…˙* Kdevelopment and implementation of a component that does some rather trivial°dONLNdÃ…ñ’* Rmathematical calculations. This example will help us focus on concepts rather than°dONLNd’ñ·* Vgetting lost in the details of solving a complex problem. We’ll build a fairly generic°dONLNdv·ñÌ* Pcomponent template that you can use in your own designs. We’ll also discuss some°dONLNd«Ìñ˘ * Qadvanced component features, such as extending component functionality, capturing°dONLNd˘ñˆ* Lcomponents, and delegating component functions. Finally, we’ll show you some°dONLNdfñ’* Etechniques and tools for debugging your components. The accompanying °dONLNd´’(-Û    Developer°dONLNdµñ√(9¥    CD Series°dONLNdæ√)-H disc contains our example component’s source code, a simple application°dONLNdñ)e(E¥/to test our component, and the debugging tools. xBx/,Times
  3241. ({/ 
  3242. +
  3243. 8
  3244. +QuickTime compatibility with Movie Recorder*
  3245. (translation: watching )JStar Trek: The Next Generation(£¥4episodes on his Macintosh). Occasionally he ventures*
  3246. ;out for a bit of mountain biking or flying. This article is*
  3247. their latest joint venture.)P•4ìq·3
  3248. (ÚDd)e)v)e)l)o)p)  
  3249. )
  3250. December 1992ˇ†æ°¿9pse
  3251. currentpoint
  3252. /picTop exch def
  3253. /picLeft exch def
  3254. psb
  3255. †ø†æ°¿=pse
  3256. currentpoint
  3257. /picBottom exch def
  3258. /picRight exch def
  3259. psb
  3260. †ø†æ°¿[ -20.5 -0.5 343.5 349.5]
  3261. °¿€1 dict begin /s exch def
  3262. picLeft picTop translate
  3263. picRight picLeft sub s 2 get s 0 get sub div
  3264. picBottom picTop sub s 1 get s 3 get sub div
  3265. scale
  3266. s 0 get neg s 3 get neg translate
  3267. end
  3268. /showpage {} def
  3269. /copypage {} def
  3270. °¿ %!PS-Adobe-3.0 EPSF-3.0
  3271. %%Creator: Adobe Illustrator(TM) 3.2
  3272. %%For: (Diane Wilcox) (Apple Computer, Inc.)
  3273. %%Title: (Woodcock Fig_01MSW)
  3274. %%CreationDate: (10/2/92) (1:20 PM)
  3275. %%BoundingBox: -20.5 -0.5 343.5 349.5
  3276. %%DocumentProcessColors: Magenta Black
  3277. %%DocumentFonts: Helvetica
  3278. %%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0
  3279. %%+ procset Adobe_cmykcolor 1.1 0
  3280. %%+ procset Adobe_cshow 1.1 0
  3281. %%+ procset Adobe_customcolor 1.0 0
  3282. %%+ procset Adobe_typography_AI3 1.0 1
  3283. %%+ procset Adobe_IllustratorA_AI3 1.0 1
  3284. %AI3_ColorUsage: Color
  3285. %AI3_TemplateBox: 156.5 99.5 156.5 99.5
  3286. %AI3_TileBox: -119.5 -265.5 432.5 464.5
  3287. %AI3_DocumentPreview: Macintosh_ColorPic
  3288. %%EndComments
  3289. %%BeginProlog
  3290. %%BeginResource: procset Adobe_packedarray 2.0 0
  3291. %%Title: (Packed Array Operators)
  3292. %%Version: 2.0 
  3293. %%CreationDate: (8/2/90) ()
  3294. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  3295. userdict /Adobe_packedarray 5 dict dup begin put
  3296. /initialize            % - initialize -
  3297. {
  3298. /packedarray where
  3299.     {
  3300.     pop
  3301.     }
  3302.     {
  3303.     Adobe_packedarray begin
  3304.     Adobe_packedarray
  3305.         {
  3306.         dup xcheck
  3307.             {
  3308.             bind
  3309.             } if
  3310.         userdict 3 1 roll put
  3311.         } forall
  3312.     end
  3313.     } ifelse
  3314. } def
  3315. /terminate            % - terminate -
  3316. {
  3317. } def
  3318. /packedarray        % arguments count packedarray array
  3319. {
  3320. array astore readonly
  3321. } def
  3322. /setpacking            % boolean setpacking -
  3323. {
  3324. pop
  3325. } def
  3326. /currentpacking        % - setpacking boolean
  3327. {
  3328. false
  3329. } def
  3330. currentdict readonly pop end
  3331. %%EndResource
  3332. Adobe_packedarray /initialize get exec
  3333. %%BeginResource: procset Adobe_cmykcolor 1.1 0
  3334. %%Title: (CMYK Color Operators)
  3335. %%Version: 1.1 
  3336. %%CreationDate: (1/23/89) ()
  3337. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  3338. currentpacking true setpacking
  3339. userdict /Adobe_cmykcolor 4 dict dup begin put
  3340. /initialize            % - initialize -
  3341. {
  3342. /setcmykcolor where
  3343.     {
  3344.     pop
  3345.     }
  3346.     {
  3347.     userdict /Adobe_cmykcolor_vars 2 dict dup begin put
  3348.     /_setrgbcolor
  3349.         /setrgbcolor load def
  3350.     /_currentrgbcolor
  3351.         /currentrgbcolor load def
  3352.     Adobe_cmykcolor begin
  3353.     Adobe_cmykcolor
  3354.         {
  3355.         dup xcheck
  3356.             {
  3357.             bind
  3358.             } if
  3359.         pop pop
  3360.         } forall
  3361.     end
  3362.     end
  3363.     Adobe_cmykcolor begin
  3364.     } ifelse
  3365. } def
  3366. /terminate            % - terminate -
  3367. {
  3368. currentdict Adobe_cmykcolor eq
  3369.     {
  3370.     end
  3371.     } if
  3372. } def
  3373. /setcmykcolor        % cyan magenta yellow black setcmykcolor -
  3374. {
  3375. 1 sub 4 1 roll
  3376. 3
  3377.     {
  3378.     3 index add neg dup 0 lt
  3379.         {
  3380.         pop 0
  3381.         } if
  3382.     3 1 roll
  3383.     } repeat
  3384. Adobe_cmykcolor_vars /_setrgbcolor get exec
  3385. pop
  3386. } def 
  3387. /currentcmykcolor    % - currentcmykcolor cyan magenta yellow black
  3388. {
  3389. Adobe_cmykcolor_vars /_currentrgbcolor get exec
  3390. 3
  3391.     {
  3392.     1 sub neg 3 1 roll
  3393.     } repeat
  3394. 0
  3395. } def
  3396. currentdict readonly pop end
  3397. setpacking
  3398. %%EndResource
  3399. %%BeginResource: procset Adobe_cshow 1.1 0
  3400. %%Title: (cshow Operator)
  3401. %%Version: 1.1 
  3402. %%CreationDate: (1/23/89) ()
  3403. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  3404. currentpacking true setpacking
  3405. userdict /Adobe_cshow 3 dict dup begin put
  3406. /initialize            % - initialize -
  3407. {
  3408. /cshow where
  3409.     {
  3410.     pop
  3411.     }
  3412.     {
  3413.     userdict /Adobe_cshow_vars 1 dict dup begin put
  3414.     /_cshow        % - _cshow proc
  3415.         {} def
  3416.     Adobe_cshow begin
  3417.     Adobe_cshow
  3418.         {
  3419.         dup xcheck
  3420.             {
  3421.             bind
  3422.             } if
  3423.         userdict 3 1 roll put
  3424.         } forall
  3425.     end
  3426.     end
  3427.     } ifelse
  3428. } def
  3429. /terminate            % - terminate -
  3430. {
  3431. } def
  3432. /cshow                % proc string cshow -
  3433. {
  3434. exch
  3435. Adobe_cshow_vars
  3436.     exch /_cshow
  3437.     exch put
  3438.     {
  3439.     0 0 Adobe_cshow_vars /_cshow get exec
  3440.     } forall
  3441. } def
  3442. currentdict readonly pop end
  3443. setpacking
  3444. %%EndResource
  3445. %%BeginResource: procset Adobe_customcolor 1.0 0
  3446. %%Title: (Custom Color Operators)
  3447. %%Version: 1.0 
  3448. %%CreationDate: (5/9/88) ()
  3449. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  3450. currentpacking true setpacking
  3451. userdict /Adobe_customcolor 5 dict dup begin put
  3452. /initialize            % - initialize -
  3453. {
  3454. /setcustomcolor where
  3455.     {
  3456.     pop
  3457.     }
  3458.     {
  3459.     Adobe_customcolor begin
  3460.     Adobe_customcolor
  3461.         {
  3462.         dup xcheck
  3463.             {
  3464.             bind
  3465.             } if
  3466.         pop pop
  3467.         } forall
  3468.     end
  3469.     Adobe_customcolor begin
  3470.     } ifelse
  3471. } def
  3472. /terminate            % - terminate -
  3473. {
  3474. currentdict Adobe_customcolor eq
  3475.     {
  3476.     end
  3477.     } if
  3478. } def
  3479. /findcmykcustomcolor    % cyan magenta yellow black name findcmykcustomcolor object
  3480. {
  3481. 5 packedarray
  3482. }  def
  3483. /setcustomcolor        % object tint setcustomcolor -
  3484. {
  3485. exch
  3486. aload pop pop
  3487. 4
  3488.     {
  3489.     4 index mul 4 1 roll
  3490.     } repeat
  3491. 5 -1 roll pop
  3492. setcmykcolor
  3493. } def
  3494. /setoverprint        % boolean setoverprint -
  3495. {
  3496. pop
  3497. } def
  3498. currentdict readonly pop end
  3499. setpacking
  3500. %%EndResource
  3501. %%BeginResource: procset Adobe_typography_AI3 1.1 0
  3502. %%Title: (Typography Operators)
  3503. %%Version: 1.0 
  3504. %%CreationDate:(5/31/90) ()
  3505. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  3506. currentpacking true setpacking
  3507. userdict /Adobe_typography_AI3 47 dict dup begin put
  3508. /initialize            % - initialize -
  3509. {
  3510. /TZ
  3511.  where
  3512.     {
  3513.     pop
  3514.     }
  3515.     {
  3516.     Adobe_typography_AI3 begin
  3517.     Adobe_typography_AI3
  3518.         {
  3519.         dup xcheck
  3520.             {
  3521.             bind
  3522.             } if
  3523.         pop pop
  3524.         } forall
  3525.     end
  3526.     Adobe_typography_AI3 begin
  3527.     } ifelse
  3528. } def
  3529. /terminate            % - terminate -
  3530. {
  3531. currentdict Adobe_typography_AI3 eq
  3532.     {
  3533.     end
  3534.     } if
  3535. } def
  3536. % [ number value stream [ array for encoding modification ] modifyEncoding ==> [ modified array ]
  3537. /modifyEncoding
  3538. {
  3539.     /_tempEncode exch ddef
  3540.     
  3541.     % pointer for sequential encodings
  3542.     /_pntr 0 ddef
  3543.     
  3544.     {
  3545.         % get bottom object
  3546.         counttomark -1 roll
  3547.         % is it a mark ?
  3548.         dup type dup /marktype eq         
  3549.         {
  3550.             % exit
  3551.             pop pop exit
  3552.         }
  3553.         {
  3554.             % ... object ... type ....
  3555.             % insert if a nametype
  3556.             /nametype eq
  3557.             {
  3558.                 % insert the name at _pntr and increment pointer
  3559.                 _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll
  3560.                 put
  3561.             }
  3562.             {
  3563.                 % reset _pntr if it's a number
  3564.                 /_pntr exch ddef                    
  3565.             }
  3566.             ifelse
  3567.         }
  3568.         ifelse
  3569.     }
  3570.     loop    
  3571.     
  3572.     % return the modified encoding
  3573.     _tempEncode
  3574. }
  3575. def
  3576. /TE    % Set std platform encoding     % (encoding pairs) TE -
  3577. {
  3578.     StandardEncoding 256 array copy modifyEncoding 
  3579.     /_nativeEncoding exch def
  3580. } def
  3581. % re-define font
  3582. % expected arguments
  3583. % for 'normal fonts : 
  3584. % [ /_Helvetica-Bold/Helvetica-Bold direction fontScript defaultEncoding TZ
  3585. %
  3586. % for cartographic, pictographic, and expert fonts :
  3587. % [ ... number value stream ... /_Symbol/Symbol 
  3588. %    direction fontScript defaultEncoding TZ
  3589. % for blended fonts w/ default encoding :
  3590. % [ /_AdobeSans_20ULig1XCond-Bold/AdobeSans 
  3591. %    direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
  3592. % for blended fonts w/ special encoding :
  3593. % [ ... number value stream ... /_AdobeSans_20ULig1XCond/AdobeSans 
  3594. %    direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
  3595. /TZ        
  3596. {
  3597.     % set weight vector (if present)
  3598.     dup type /arraytype eq {/_wv exch def} {/_wv 0 def} ifelse 
  3599.     % platform dependent coding flag
  3600.     /_useNativeEncoding exch def
  3601.     % pop fontScript & direction
  3602.     pop pop
  3603.     
  3604.     % create a new dictionary with length
  3605.     % equal to original dictionary length + 2
  3606.     % copy all the key/value pairs except FID
  3607.     % call makeblended font with the weight values if _wv is an array
  3608.     findfont _wv type /arraytype eq {_wv makeblendedfont} if dup length 2 add dict
  3609.     
  3610.     begin
  3611.     
  3612.         % copy all the values but the FID
  3613.         % into the new dictionary
  3614.         mark exch
  3615.         {
  3616.             1 index /FID ne { def } if cleartomark mark
  3617.         }
  3618.         forall
  3619.         % discard last mark
  3620.         pop
  3621.         
  3622.         % define FontName
  3623.         /FontName exch def
  3624.         
  3625.         % if no re-encoding stream is present
  3626.         % then if the base encoding vector of the font
  3627.         % is the same as StandardEncoding
  3628.         % and the use platform encoding flag is true
  3629.         % then install AI platform encoding
  3630.         % else leave the base encoding in effect
  3631.         counttomark 0 eq
  3632.         {
  3633.             1 _useNativeEncoding eq
  3634.             {
  3635.                 /Encoding _nativeEncoding def
  3636.             }
  3637.             if
  3638.             % clean up
  3639.             cleartomark
  3640.         }
  3641.         {    
  3642.             % custom encoding to be done
  3643.             % start off with a copy of the font's standard encoding
  3644.             /Encoding load 256 array copy 
  3645.             modifyEncoding /Encoding exch def
  3646.         }
  3647.         ifelse        
  3648.         FontName currentdict
  3649.     end
  3650.     
  3651.     % register the new font
  3652.     definefont pop
  3653. }
  3654. def
  3655. % text painting operators
  3656. /tr                    % string tr ax ay string 
  3657. {
  3658. _ax _ay 3 2 roll
  3659. } def
  3660. /trj                % string trj cx cy fillchar ax ay string 
  3661. {
  3662. _cx _cy _sp _ax _ay 6 5 roll
  3663. } def
  3664. /a0
  3665. {
  3666. /Tx    % text                            % textString Tx -
  3667.     {
  3668.     dup 
  3669.     currentpoint 3 2 roll
  3670.     tr _psf
  3671.     newpath moveto
  3672.     tr _ctm _pss
  3673.     } ddef
  3674. /Tj    % justified text                % textString Tj -
  3675.     {
  3676.     dup
  3677.     currentpoint 3 2 roll
  3678.     trj _pjsf
  3679.     newpath moveto
  3680.     trj _ctm _pjss
  3681.     } ddef
  3682.     
  3683. } def
  3684. /a1
  3685. {
  3686. /Tx    % text                            % textString Tx -
  3687.     {
  3688.     dup currentpoint 4 2 roll gsave
  3689.     dup currentpoint 3 2 roll
  3690.     tr _psf
  3691.     ne°¿ wpath moveto
  3692.     tr _ctm _pss
  3693.     grestore 3 1 roll moveto tr sp
  3694.     } ddef
  3695. /Tj    % justified text                % textString Tj -
  3696.     {
  3697.     dup currentpoint 4 2 roll gsave
  3698.     dup currentpoint 3 2 roll
  3699.     trj _pjsf
  3700.     newpath moveto
  3701.     trj _ctm _pjss
  3702.     grestore 3 1 roll moveto tr sp
  3703.     } ddef
  3704.     
  3705. } def
  3706. /e0
  3707. {
  3708. /Tx    % text                            % textString Tx -
  3709.     {
  3710.     tr _psf
  3711.     } ddef
  3712. /Tj    % justified text                % textString Tj -
  3713.     {
  3714.     trj _pjsf
  3715.     } ddef
  3716. } def
  3717. /e1
  3718. {
  3719. /Tx    % text                            % textString Tx -
  3720.     {
  3721.     dup currentpoint 4 2 roll gsave 
  3722.     tr _psf  
  3723.     grestore 3 1 roll moveto tr sp 
  3724.     } ddef
  3725. /Tj    % justified text                % textString Tj -
  3726.     {
  3727.     dup currentpoint 4 2 roll gsave 
  3728.     trj _pjsf
  3729.     grestore 3 1 roll moveto tr sp 
  3730.     } ddef
  3731. } def
  3732. /i0
  3733. {
  3734. /Tx    % text                            % textString Tx -
  3735.     {
  3736.     tr sp
  3737.     } ddef
  3738. /Tj    % justified text                % textString Tj -
  3739.     {
  3740.     trj jsp
  3741.     } ddef
  3742. } def
  3743. /i1
  3744. {
  3745. W N
  3746. } def
  3747. /o0
  3748. {
  3749. /Tx    % text                            % textString Tx -
  3750.     {
  3751.     tr sw rmoveto
  3752.     } ddef
  3753. /Tj    % justified text                % textString Tj -
  3754.     {
  3755.     trj swj rmoveto
  3756.     } ddef
  3757. } def
  3758. /r0
  3759. {
  3760. /Tx    % text                            % textString Tx -
  3761.     {
  3762.     tr _ctm _pss
  3763.     } ddef
  3764. /Tj    % justified text                % textString Tj -
  3765.     {
  3766.     trj _ctm _pjss
  3767.     } ddef
  3768. } def
  3769. /r1
  3770. {
  3771. /Tx    % text                            % textString Tx -
  3772.     {
  3773.     dup currentpoint 4 2 roll currentpoint gsave newpath moveto
  3774.     tr _ctm _pss 
  3775.     grestore 3 1 roll moveto tr sp 
  3776.     } ddef
  3777. /Tj    % justified text                % textString Tj -
  3778.     {
  3779.     dup currentpoint 4 2 roll currentpoint gsave newpath moveto
  3780.     trj _ctm _pjss
  3781.     grestore 3 1 roll moveto tr sp 
  3782.     } ddef
  3783. } def
  3784. % font operators
  3785. % Binding
  3786. /To    % begin text                     % bindType To -
  3787. {
  3788.     pop _ctm currentmatrix pop
  3789. } def
  3790. /TO    % end text                    % TO -
  3791. {
  3792.     Te _ctm setmatrix newpath
  3793. } def
  3794. % Text paths
  3795. /Tp    % begin text path                % a b c d tx ty startPt Tp -
  3796. {
  3797.     pop _tm astore pop _ctm setmatrix 
  3798.     _tDict begin /W {} def /h {} def
  3799. } def
  3800. /TP    % end text path                    % TP -
  3801. {
  3802.     end
  3803.     iTm 0 0 moveto
  3804. } def
  3805. % Render mode & matrix operators
  3806. /Tr    % begin render                    % render Tr - 
  3807. {
  3808.     _render 3 le {currentpoint newpath moveto} if
  3809.     dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse
  3810.     dup /_render exch ddef
  3811.     _renderStart exch get load exec
  3812. } def
  3813. /iTm % internal set text matrix        % - iTm -    (uses _tm as implicit argument)
  3814. {
  3815. _ctm setmatrix _tm concat 0 _rise translate _hs 1 scale
  3816. } def
  3817. /Tm % set text matrix                % a b c d tx ty Tm -
  3818. {
  3819. _tm astore pop iTm 0 0 moveto
  3820. } def
  3821. /Td % translate text matrix         % tx ty Td -
  3822. {
  3823. _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto
  3824. } def
  3825. /Te    % end render                    % - Te -
  3826. {
  3827.     _render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse
  3828.     /_render -1 ddef
  3829. } def
  3830. % Attributes
  3831. /Ta    % set alignment                    % alignment Ta -
  3832. {
  3833. pop
  3834. } def
  3835. /Tf    % set font name and size        % fontname size Tf -
  3836. {
  3837. dup 1000 div /_fScl exch ddef
  3838. exch findfont exch scalefont setfont
  3839. } def
  3840. /Tl    % set leading                    % leading paragraphLeading Tl -
  3841. {
  3842. pop
  3843. 0 exch _leading astore pop
  3844. } def
  3845. /Tt    % set user tracking                % userTracking Tt -
  3846. {
  3847. pop
  3848. } def
  3849. /TW % set word spacing                % minSpace optSpace maxSpace TW -
  3850. {
  3851. 3 npop
  3852. } def
  3853. /Tw    % set computed word spacing        % wordSpace Tw
  3854. {
  3855. /_cx exch ddef
  3856. } def
  3857. /TC % set character spacing            % minSpace optSpace maxSpace TC -
  3858. {
  3859. 3 npop
  3860. } def
  3861. /Tc    % set computed char spacing     % charSpace Tc -
  3862. {
  3863. /_ax exch ddef
  3864. } def
  3865. /Ts % set super/subscripting (rise)    % rise Ts -
  3866. {
  3867. /_rise exch ddef
  3868. currentpoint
  3869. iTm
  3870. moveto
  3871. } def
  3872. /Ti    % set indentation                % firstStartIndent otherStartIndent stopIndent Ti -
  3873. {
  3874. 3 npop
  3875. } def
  3876. /Tz % set horizontal scaling        % scalePercent Tz -
  3877. {
  3878. 100 div /_hs exch ddef
  3879. iTm
  3880. } def
  3881. /TA % set pairwise kerning            % autoKern TA -
  3882.                                     %    autoKern = 0 -> no pair kerning
  3883.                                     %             = 1 -> automatic pair kerning
  3884. {
  3885. pop
  3886. } def
  3887. /Tq % set hanging quotes            % hangingQuotes Tq -
  3888.                                     %    hangingQuotes     = 0 -> no hanging quotes
  3889.                                     %                     = 1 -> hanging quotes
  3890. {
  3891. pop
  3892. } def
  3893. % Text Bodies
  3894. /TX {pop} def
  3895. %/Tx    % non-justified text            % textString Tx -
  3896. %/Tj    % justified text                % textString Tj -
  3897. /Tk    % kern                            % autoKern kernValue Tk -
  3898.                                     %      autoKern = 0 -> manual kern, = 1 -> auto kern
  3899.                                     %    kernValue = kern value in em/1000 space
  3900. {
  3901. exch pop _fScl mul neg 0 rmoveto
  3902. } def
  3903. /TK    % non-printing kern                % autoKern kernValue TK -
  3904. {
  3905. 2 npop
  3906. } def
  3907. /T* % carriage return & line feed    % - T* -
  3908. {
  3909. _leading aload pop neg Td
  3910. } def
  3911. /T*- % carriage return & negative line feed    % - T*- -
  3912. {
  3913. _leading aload pop Td
  3914. } def
  3915. /T-    % print a discretionary hyphen    % - T- -
  3916. {
  3917. _hyphen Tx
  3918. } def
  3919. /T+    % discretionary hyphen hyphen    % - T+ -
  3920. {} def
  3921. /TR    % reset pattern matrix             % a b c d tx ty TR -
  3922. {
  3923. _ctm currentmatrix pop     
  3924. _tm astore pop 
  3925. iTm 0 0 moveto 
  3926. } def
  3927. /TS    % special chars                    % textString justified TS -
  3928. {
  3929. 0 eq {Tx} {Tj} ifelse
  3930. } def
  3931. currentdict readonly pop end
  3932. setpacking
  3933. %%EndResource
  3934. %%BeginResource: procset Adobe_IllustratorA_AI3 1.0 2
  3935. %%Title: (Adobe Illustrator (R) Version 3.0 Abbreviated Prolog)
  3936. %%Version: 1.0 
  3937. %%CreationDate: (7/22/89) ()
  3938. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  3939. currentpacking true setpacking
  3940. userdict /Adobe_IllustratorA_AI3 61 dict dup begin put
  3941. % initialization
  3942. /initialize                % - initialize -
  3943. {
  3944. % 47 vars, but leave slack of 10 entries for custom Postscript fragments
  3945. userdict /Adobe_IllustratorA_AI3_vars 57 dict dup begin put
  3946. % paint operands
  3947. /_lp /none def
  3948. /_pf {} def
  3949. /_ps {} def
  3950. /_psf {} def
  3951. /_pss {} def
  3952. /_pjsf {} def
  3953. /_pjss {} def
  3954. /_pola 0 def
  3955. /_doClip 0 def
  3956. % paint operators
  3957. /cf    currentflat def    % - cf flatness
  3958. % typography operands
  3959. /_tm matrix def
  3960. /_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def 
  3961. /_renderEnd [null null null null /i1 /i1 /i1 /i1] def
  3962. /_render -1 def
  3963. /_rise 0 def
  3964. /_ax 0 def            % x character spacing    (_ax, _ay, _cx, _cy follows awidthshow naming convention)
  3965. /_ay 0 def            % y character spacing
  3966. /_cx 0 def            % x word spacing
  3967. /_cy 0 def            % y word spacing
  3968. /_leading [0 0] def
  3969. /_ctm matrix def
  3970. /_mtx matrix def
  3971. /_sp 16#020 def
  3972. /_hyphen (-) def
  3973. /_fScl 0 def
  3974. /_cnt 0 def
  3975. /_hs 1 def
  3976. /_nativeEncoding 0 def
  3977. /_useNativeEncoding 0 def
  3978. /_tempEncode 0 def
  3979. /_pntr 0 def
  3980. /_tDict 2 dict def
  3981. % typography operators
  3982. /Tx {} def
  3983. /Tj {} def
  3984. % compound path operators
  3985. /CRender {} def
  3986. % printing
  3987. /_AI3_savepage {} def
  3988. % color operands
  3989. /_gf null def
  3990. /_cf 4 array def
  3991. /_if null def
  3992. /_of false def
  3993. /_fc {} def
  3994. /_gs null def
  3995. /_cs 4 array def
  3996. /_is null def
  3997. /_os false def
  3998. /_sc {} def
  3999. /_i null def
  4000. Adobe_IllustratorA_AI3 begin
  4001. Adobe_IllustratorA_AI3
  4002.     {
  4003.     dup xcheck
  4004.         {
  4005.         bind
  4006.         } if
  4007.     pop pop
  4008.     } forall
  4009. end
  4010. end
  4011. Adobe_IllustratorA_AI3 begin
  4012. Adobe_IllustratorA_AI3_vars begin
  4013. newpath
  4014. } def
  4015. /terminate                % - terminate -
  4016. {
  4017. end
  4018. end
  4019. } def
  4020. % definition operators
  4021. /_                    % - _ null
  4022. null def
  4023. /ddef                % key value ddef -
  4024. {
  4025. Adobe_IllustratorA_AI3_vars 3 1 roll put
  4026. } def
  4027. /xput                % key value literal xput -
  4028. {
  4029. dup load dup length exch maxlength eq
  4030.     {
  4031.     dup dup load dup
  4032.     length 2 mul dict copy def
  4033.     } if
  4034. load begin def end
  4035. } def
  4036. /npop                % integer npop -
  4037. {
  4038.     {
  4039.     pop
  4040.     } repeat
  4041. } def
  4042. % marking operators
  4043. /sw                    % ax ay string sw x y 
  4044. {
  4045. dup length exch stringwidth
  4046. exch 5 -1 roll 3 index 1 sub mul add
  4047. 4 1 roll 3 1 roll 1 sub mul add
  4048. } def
  4049. /swj                % cx cy fillchar ax ay string swj x y
  4050. {
  4051. dup 4 1 roll
  4052. dup length exch stringwidth 
  4053. exch 5 -1 roll 3 index 1 sub mul add
  4054. 4 1 roll 3 1 roll 1 sub mul add 
  4055. 6 2 roll /_cnt 0 ddef
  4056. {1 index eq {/_cnt _cnt 1 add ddef} if} forall pop
  4057. exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop
  4058. } def
  4059. /ss                    % ax ay string matrix ss -
  4060. {
  4061. 4 1 roll
  4062.     {                % matrix ax ay char 0 0 {proc} -
  4063.     2 npop 
  4064.     (0) exch 2 copy 0 exch put pop
  4065.     gsave
  4066.     false charpath currentpoint
  4067.     4 index setmatrix
  4068.     stroke
  4069.     grestore
  4070.     moveto
  4071.     2 copy rmoveto
  4072.     } exch cshow
  4073. 3 npop
  4074. } def
  4075. /jss                % cx cy fillchar ax ay string matrix jss -
  4076. {
  4077. 4 1 roll
  4078.     {                % cx cy fillchar matrix ax ay char 0 0 {proc} -   
  4079.     2 npop 
  4080.     (0) exch 2 copy 0 exch put 
  4081.     gsave
  4082.     _sp eq 
  4083.         {
  4084.         exch 6 index 6 index 6 index 5 -1 roll widthshow  
  4085.         currentpoint
  4086.         }
  4087.         {
  4088.         false charpath currentpoint
  4089.         4 index setmatrix stroke
  4090.         }ifelse
  4091.     grestore
  4092.     moveto
  4093.     2 copy rmoveto
  4094.     } exch cshow
  4095. 6 npop
  4096. } def
  4097. % path operators
  4098. /sp                    % ax ay string sp -
  4099. {
  4100.     {
  4101.     2 npop (0) exch
  4102.     2 copy 0 exch put pop
  4103.     false charpath
  4104.     2 copy rmoveto
  4105.     } exch cshow
  4106. 2 npop
  4107. } def
  4108. /jsp                    % cx cy fillchar ax ay string jsp -
  4109. {
  4110.     {                    % cx cy fillchar ax ay char 0 0 {proc} -
  4111.     2 npop 
  4112.     (0) exch 2 copy 0 exch put 
  4113.     _sp eq 
  4114.         {
  4115.         exch 5 index 5 index 5 index 5 -1 roll w°¿ idthshow  
  4116.         }
  4117.         {
  4118.         false charpath
  4119.         }ifelse
  4120.     2 copy rmoveto
  4121.     } exch cshow
  4122. 5 npop
  4123. } def
  4124. % path construction operators
  4125. /pl                % x y pl x y
  4126. {
  4127. transform
  4128. 0.25 sub round 0.25 add exch
  4129. 0.25 sub round 0.25 add exch
  4130. itransform
  4131. } def
  4132. /setstrokeadjust where
  4133.     {
  4134.     pop true setstrokeadjust
  4135.     /c                % x1 y1 x2 y2 x3 y3 c -
  4136.     {
  4137.     curveto
  4138.     } def
  4139.     /C
  4140.     /c load def
  4141.     /v                % x2 y2 x3 y3 v -
  4142.     {
  4143.     currentpoint 6 2 roll curveto
  4144.     } def
  4145.     /V
  4146.     /v load def
  4147.     /y                % x1 y1 x2 y2 y -
  4148.     {
  4149.     2 copy curveto
  4150.     } def
  4151.     /Y
  4152.     /y load def
  4153.     /l                % x y l -
  4154.     {
  4155.     lineto
  4156.     } def
  4157.     /L
  4158.     /l load def
  4159.     /m                % x y m -
  4160.     {
  4161.     moveto
  4162.     } def
  4163.     }
  4164.     {%else
  4165.     /c
  4166.     {
  4167.     pl curveto
  4168.     } def
  4169.     /C
  4170.     /c load def
  4171.     /v
  4172.     {
  4173.     currentpoint 6 2 roll pl curveto
  4174.     } def
  4175.     /V
  4176.     /v load def
  4177.     /y
  4178.     {
  4179.     pl 2 copy curveto
  4180.     } def
  4181.     /Y
  4182.     /y load def
  4183.     /l
  4184.     {
  4185.     pl lineto
  4186.     } def
  4187.     /L
  4188.     /l load def
  4189.     /m
  4190.     {
  4191.     pl moveto
  4192.     } def
  4193.     }ifelse
  4194. % graphic state operators
  4195. /d                    % array phase d -
  4196. {
  4197. setdash
  4198. } def
  4199. /cf    {} def            % - cf flatness
  4200. /i                    % flatness i -
  4201. {
  4202. dup 0 eq
  4203.     {
  4204.     pop cf
  4205.     } if
  4206. setflat
  4207. } def
  4208. /j                    % linejoin j -
  4209. {
  4210. setlinejoin
  4211. } def
  4212. /J                    % linecap J -
  4213. {
  4214. setlinecap
  4215. } def
  4216. /M                    % miterlimit M -
  4217. {
  4218. setmiterlimit
  4219. } def
  4220. /w                    % linewidth w -
  4221. {
  4222. setlinewidth
  4223. } def
  4224. % path painting operators
  4225. /H                    % - H -
  4226. {} def
  4227. /h                    % - h -
  4228. {
  4229. closepath
  4230. } def
  4231. /N                    % - N -
  4232. {
  4233. _pola 0 eq 
  4234.     {
  4235.     _doClip 1 eq {clip /_doClip 0 ddef} if 
  4236.     newpath
  4237.     } 
  4238.     {
  4239.     /CRender {N} ddef
  4240.     }ifelse
  4241. } def
  4242. /n                    % - n -
  4243. {N} def
  4244. /F                    % - F -
  4245. {
  4246. _pola 0 eq 
  4247.     {
  4248.     _doClip 1 eq 
  4249.         {
  4250.         gsave _pf grestore clip newpath /_lp /none ddef _fc 
  4251.         /_doClip 0 ddef
  4252.         }
  4253.         {
  4254.         _pf
  4255.         }ifelse
  4256.     } 
  4257.     {
  4258.     /CRender {F} ddef
  4259.     }ifelse
  4260. } def
  4261. /f                    % - f -
  4262. {
  4263. closepath
  4264. F
  4265. } def
  4266. /S                    % - S -
  4267. {
  4268. _pola 0 eq 
  4269.     {
  4270.     _doClip 1 eq 
  4271.         {
  4272.         gsave _ps grestore clip newpath /_lp /none ddef _sc 
  4273.         /_doClip 0 ddef
  4274.         }
  4275.         {
  4276.         _ps
  4277.         }ifelse
  4278.     } 
  4279.     {
  4280.     /CRender {S} ddef
  4281.     }ifelse
  4282. } def
  4283. /s                    % - s -
  4284. {
  4285. closepath
  4286. S
  4287. } def
  4288. /B                    % - B -
  4289. {
  4290. _pola 0 eq 
  4291.     {
  4292.     _doClip 1 eq     % F clears _doClip
  4293.     gsave F grestore 
  4294.         {
  4295.         gsave S grestore clip newpath /_lp /none ddef _sc
  4296.         /_doClip 0 ddef
  4297.         } 
  4298.         {
  4299.         S
  4300.         }ifelse
  4301.     }
  4302.     {
  4303.     /CRender {B} ddef
  4304.     }ifelse
  4305. } def
  4306. /b                    % - b -
  4307. {
  4308. closepath
  4309. B
  4310. } def
  4311. /W                    % - W -
  4312. {
  4313. /_doClip 1 ddef
  4314. } def
  4315. /*                    % - [string] * -
  4316. {
  4317. count 0 ne 
  4318.     {
  4319.     dup type (stringtype) eq {pop} if
  4320.     } if 
  4321. _pola 0 eq {newpath} if
  4322. } def
  4323. % group operators
  4324. /u                    % - u -
  4325. {} def
  4326. /U                    % - U -
  4327. {} def
  4328. /q                    % - q -
  4329. {
  4330. _pola 0 eq {gsave} if
  4331. } def
  4332. /Q                    % - Q -
  4333. {
  4334. _pola 0 eq {grestore} if
  4335. } def
  4336. /*u                    % - *u -
  4337. {
  4338. _pola 1 add /_pola exch ddef
  4339. } def
  4340. /*U                    % - *U -
  4341. {
  4342. _pola 1 sub /_pola exch ddef 
  4343. _pola 0 eq {CRender} if
  4344. } def
  4345. /D                    % polarized D -
  4346. {pop} def
  4347. /*w                    % - *w -
  4348. {} def
  4349. /*W                    % - *W -
  4350. {} def
  4351. % place operators
  4352. /`                    % matrix llx lly urx ury string ` -
  4353. {
  4354. /_i save ddef
  4355. 6 1 roll 4 npop
  4356. concat pop
  4357. userdict begin
  4358. /showpage {} def
  4359. 0 setgray
  4360. 0 setlinecap
  4361. 1 setlinewidth
  4362. 0 setlinejoin
  4363. 10 setmiterlimit
  4364. [] 0 setdash
  4365. newpath
  4366. 0 setgray
  4367. false setoverprint
  4368. } def
  4369. /~                    % - ~ -
  4370. {
  4371. end
  4372. _i restore
  4373. } def
  4374. % color operators
  4375. /O                    % flag O -
  4376. {
  4377. 0 ne
  4378. /_of exch ddef
  4379. /_lp /none ddef
  4380. } def
  4381. /R                    % flag R -
  4382. {
  4383. 0 ne
  4384. /_os exch ddef
  4385. /_lp /none ddef
  4386. } def
  4387. /g                    % gray g -
  4388. {
  4389. /_gf exch ddef
  4390. /_fc
  4391. _lp /fill ne
  4392.     {
  4393.     _of setoverprint
  4394.     _gf setgray
  4395.     /_lp /fill ddef
  4396.     } if
  4397. } ddef
  4398. /_pf
  4399. {
  4400. _fc
  4401. fill
  4402. } ddef
  4403. /_psf
  4404. {
  4405. _fc
  4406. ashow
  4407. } ddef
  4408. /_pjsf
  4409. {
  4410. _fc
  4411. awidthshow
  4412. } ddef
  4413. /_lp /none ddef
  4414. } def
  4415. /G                    % gray G -
  4416. {
  4417. /_gs exch ddef
  4418. /_sc
  4419. {
  4420. _lp /stroke ne
  4421.     {
  4422.     _os setoverprint
  4423.     _gs setgray
  4424.     /_lp /stroke ddef
  4425.     } if
  4426. } ddef
  4427. /_ps
  4428. {
  4429. _sc
  4430. stroke
  4431. } ddef
  4432. /_pss
  4433. {
  4434. _sc
  4435. ss
  4436. } ddef
  4437. /_pjss
  4438. {
  4439. _sc
  4440. jss
  4441. } ddef
  4442. /_lp /none ddef
  4443. } def
  4444. /k                    % cyan magenta yellow black k -
  4445. {
  4446. _cf astore pop
  4447. /_fc
  4448. {
  4449. _lp /fill ne
  4450.     {
  4451.     _of setoverprint
  4452.     _cf aload pop setcmykcolor
  4453.     /_lp /fill ddef
  4454.     } if
  4455. } ddef
  4456. /_pf
  4457. {
  4458. _fc
  4459. fill
  4460. } ddef
  4461. /_psf
  4462. {
  4463. _fc
  4464. ashow
  4465. } ddef
  4466. /_pjsf
  4467. {
  4468. _fc
  4469. awidthshow
  4470. } ddef
  4471. /_lp /none ddef
  4472. } def
  4473. /K                    % cyan magenta yellow black K -
  4474. {
  4475. _cs astore pop
  4476. /_sc
  4477. {
  4478. _lp /stroke ne
  4479.     {
  4480.     _os setoverprint
  4481.     _cs aload pop setcmykcolor
  4482.     /_lp /stroke ddef
  4483.     } if
  4484. } ddef
  4485. /_ps
  4486. {
  4487. _sc
  4488. stroke
  4489. } ddef
  4490. /_pss
  4491. {
  4492. _sc
  4493. ss
  4494. } ddef
  4495. /_pjss
  4496. {
  4497. _sc
  4498. jss
  4499. } ddef
  4500. /_lp /none ddef
  4501. } def
  4502. /x                    % cyan magenta yellow black name gray x -
  4503. {
  4504. /_gf exch ddef
  4505. findcmykcustomcolor
  4506. /_if exch ddef
  4507. /_fc
  4508. _lp /fill ne
  4509.     {
  4510.     _of setoverprint
  4511.     _if _gf 1 exch sub setcustomcolor
  4512.     /_lp /fill ddef
  4513.     } if
  4514. } ddef
  4515. /_pf
  4516. {
  4517. _fc
  4518. fill
  4519. } ddef
  4520. /_psf
  4521. {
  4522. _fc
  4523. ashow
  4524. } ddef
  4525. /_pjsf
  4526. {
  4527. _fc
  4528. awidthshow
  4529. } ddef
  4530. /_lp /none ddef
  4531. } def
  4532. /X                    % cyan magenta yellow black name gray X -
  4533. {
  4534. /_gs exch ddef
  4535. findcmykcustomcolor
  4536. /_is exch ddef
  4537. /_sc
  4538. {
  4539. _lp /stroke ne
  4540.     {
  4541.     _os setoverprint
  4542.     _is _gs 1 exch sub setcustomcolor
  4543.     /_lp /stroke ddef
  4544.     } if
  4545. } ddef
  4546. /_ps
  4547. {
  4548. _sc
  4549. stroke
  4550. } ddef
  4551. /_pss
  4552. {
  4553. _sc
  4554. ss
  4555. } ddef
  4556. /_pjss
  4557. {
  4558. _sc
  4559. jss
  4560. } ddef
  4561. /_lp /none ddef
  4562. } def
  4563. % locked object operator
  4564. /A                    % value A -
  4565. {
  4566. pop
  4567. } def
  4568. currentdict readonly pop end
  4569. setpacking
  4570. % annotate page operator
  4571. /annotatepage
  4572. {
  4573. } def
  4574. %%EndResource
  4575. %%EndProlog
  4576. %%BeginSetup
  4577. %%IncludeFont: Helvetica
  4578. Adobe_cmykcolor /initialize get exec
  4579. Adobe_cshow /initialize get exec
  4580. Adobe_customcolor /initialize get exec
  4581. Adobe_typography_AI3 /initialize get exec
  4582. Adobe_IllustratorA_AI3 /initialize get exec
  4583. [
  4584. 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis
  4585. /Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute
  4586. /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde
  4587. /oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex
  4588. /udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
  4589. /registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
  4590. /.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
  4591. /.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
  4592. /questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef
  4593. /guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe
  4594. /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide
  4595. /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright
  4596. /fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
  4597. /Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex
  4598. /Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex
  4599. /Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla
  4600. /hungarumlaut/ogonek/caron
  4601. TE
  4602. %AI3_BeginEncoding: _Helvetica Helvetica
  4603. [/_Helvetica/Helvetica 0 0 1 TZ
  4604. %AI3_EndEncoding TrueType
  4605. %%EndSetup
  4606. 0 A
  4607. u
  4608. u
  4609. u
  4610. 0 O
  4611. 0 g
  4612. 0 i 0 J 0 j 1 w 4 M []0 d
  4613. %AI3_Note:
  4614. 0 D
  4615. 246.6651 248.125 m
  4616. 246.6651 343.8851 L
  4617. 138.9349 343.8851 L
  4618. 138.9349 248.125 L
  4619. 246.6651 248.125 L
  4620. f
  4621. 193.5425 295.2626 m
  4622. F
  4623. U
  4624. u
  4625. 246.6651 206.23 m
  4626. 246.6651 230.17 L
  4627. 138.9349 230.17 L
  4628. 138.9349 206.23 L
  4629. 246.6651 206.23 L
  4630. f
  4631. 193.5425 217.4575 m
  4632. F
  4633. U
  4634. u
  4635. 342.2772 155.5924 m
  4636. 342.2772 188.5324 L
  4637. 234.5471 188.5324 L
  4638. 234.5471 155.5924 L
  4639. 342.2772 155.5924 L
  4640. f
  4641. 288.4122 167.5624 m
  4642. F
  4643. U
  4644. u
  4645. 92.5044 113.7748 m
  4646. 92.5044 137.7149 L
  4647. -15.2257 137.7149 L
  4648. -15.2257 113.7748 L
  4649. 92.5044 113.7748 L
  4650. f
  4651. 39.3818 125.0023 m
  4652. F
  4653. U
  4654. u
  4655. 341.5347 113.7748 m
  4656. 341.5347 137.7149 L
  4657. 233.8046 137.7149 L
  4658. 233.8046 113.7748 L
  4659. 341.5347 113.7748 L
  4660. f
  4661. 288.4122 125.0023 m
  4662. F
  4663. U
  4664. u
  4665. 341.6252 0.7247 m
  4666. 341.6252 96.4848 L
  4667. 233.8951 96.4848 L
  4668. 233.8951 0.7247 L
  4669. 341.6252 0.7247 L
  4670. f
  4671. 288.5026 47.8622 m
  4672. F
  4673. U
  4674. u
  4675. 217.0196 113.7748 m
  4676. 217.0196 137.7149 L
  4677. 109.2894 137.7149 L
  4678. 109.2894 113.7748 L
  4679. 217.0196 113.7748 L
  4680. f
  4681. 163.897 125.0023 m
  4682. F
  4683. U
  4684. u
  4685. 154.3945 156.3349 m
  4686. 154.3945 189.2749 L
  4687. 46.6644 189.2749 L
  4688. 46.6644 156.3349 L
  4689. 154.3945 156.3349 L
  4690. f
  4691. 101.8919 167.5624 m
  4692. F
  4693. U
  4694. 92.5949 0.7247 m
  4695. 92.5949 96.4848 L
  4696. -15.1353 96.4848 L
  4697. -15.1353 0.7247 L
  4698. 92.5949 0.7247 L
  4699. f
  4700. U
  4701. 0 R
  4702. 0 G
  4703. 98.9899 50.8547 m
  4704. S
  4705. u
  4706. 0 O
  4707. 0 0.1 0 0 k
  4708. 1 R
  4709. 0.75 w
  4710. 244.4151 250.375 m
  4711. 244.4151 346.1351 L
  4712. 136.6849 346.1351 L
  4713. 136.6849 250.375 L
  4714. 244.4151 250.375 L
  4715. b
  4716. 1 g
  4717. 0 R
  4718. 1 w
  4719. 190.55 298.2551 m
  4720. B
  4721. U
  4722. u
  4723. 0 0.1 0 0 k
  4724. 1 R
  4725. 0.75 w
  4726. 244.4151 208.48 m
  4727. 244.4151 232.42 L
  4728. 136.6849 232.42 L
  4729. 136.6849 208.48 L
  4730. 244.4151 208.48 L
  4731. b
  4732. 1 g
  4733. 0 R
  4734. 1 w
  4735. 190.55 220.45 m
  4736. B
  4737. U
  4738. u
  4739. 0 0.1 0 0 k
  4740. 1 R
  4741. 0.75 w
  4742. 339.2847 158.5849 m
  4743. 339.2847 191.5249 L
  4744. 231.5546 191.5249 L
  4745. 231.5546 158.5849 L
  4746. 339.2847 158.5849 L
  4747. b
  4748. 1 g
  4749. 0 R
  4750. 1 w
  4751. 285.4197 170.5549 m
  4752. B
  4753. U
  4754. u
  4755. 0 0.1 0 0 k
  4756. 1 R
  4757. 0.75 w
  4758. 90.2544 116.0248 m
  4759. 90.2544 139.9649 L
  4760. -17.4757 139.9649 L
  4761. -17.4757 116.0248 L
  4762. 90.2544 116.0248 L
  4763. b
  4764. 1 g
  4765. 0 R
  4766. 1 w
  4767. 36.3893 127.9949 m
  4768. B
  4769. U
  4770. u
  4771. 0 0.1 0 0 k
  4772. 1 R
  4773. 0.75 w
  4774. 339.2847 116.0248 m
  4775. 339.2847 139.9649 L
  4776. 231.5546 139.9649 L
  4777. 231.5546 116.02°¿ 48 L
  4778. 339.2847 116.0248 L
  4779. b
  4780. 1 g
  4781. 0 R
  4782. 1 w
  4783. 285.4197 127.9949 m
  4784. B
  4785. U
  4786. u
  4787. 0 0.1 0 0 k
  4788. 1 R
  4789. 0.75 w
  4790. 339.3752 2.9747 m
  4791. 339.3752 98.7348 L
  4792. 231.645 98.7348 L
  4793. 231.645 2.9747 L
  4794. 339.3752 2.9747 L
  4795. b
  4796. 1 g
  4797. 0 R
  4798. 1 w
  4799. 285.5101 50.8547 m
  4800. B
  4801. U
  4802. u
  4803. 0 0.1 0 0 k
  4804. 1 R
  4805. 0.75 w
  4806. 214.7696 116.0248 m
  4807. 214.7696 139.9649 L
  4808. 107.0394 139.9649 L
  4809. 107.0394 116.0248 L
  4810. 214.7696 116.0248 L
  4811. b
  4812. 1 g
  4813. 0 R
  4814. 1 w
  4815. 160.9045 127.9949 m
  4816. B
  4817. U
  4818. u
  4819. 0 0.1 0 0 k
  4820. 1 R
  4821. 0.75 w
  4822. 152.1445 158.5849 m
  4823. 152.1445 191.5249 L
  4824. 44.4144 191.5249 L
  4825. 44.4144 158.5849 L
  4826. 152.1445 158.5849 L
  4827. b
  4828. 1 g
  4829. 0 R
  4830. 1 w
  4831. 98.7794 170.5549 m
  4832. B
  4833. U
  4834. 0 0.1 0 0 k
  4835. 1 R
  4836. 0.75 w
  4837. 90.3448 2.9747 m
  4838. 90.3448 98.7348 L
  4839. -17.3853 98.7348 L
  4840. -17.3853 2.9747 L
  4841. 90.3448 2.9747 L
  4842. b
  4843. 1 g
  4844. 0 R
  4845. 1 w
  4846. 190.55 250.375 m
  4847. 190.55 232.75 l
  4848. B
  4849. 136.1849 220.45 m
  4850. 98.3699 220.45 l
  4851. 98.3699 191.1899 l
  4852. S
  4853. 244.7401 220.45 m
  4854. 285.5101 220.45 l
  4855. 285.5101 192.0249 l
  4856. S
  4857. 285.5101 158.5849 m
  4858. 285.5101 139.9649 l
  4859. S
  4860. 285.5101 116.0248 m
  4861. 285.5101 98.7348 l
  4862. S
  4863. 152.8549 170.5549 m
  4864. 160.9949 170.5549 l
  4865. 160.9949 139.9649 l
  4866. S
  4867. 44.1248 170.5549 m
  4868. 36.4798 170.5549 l
  4869. 36.4798 139.9649 l
  4870. S
  4871. 36.4798 116.0248 m
  4872. 36.4798 98.7348 l
  4873. S
  4874. U
  4875. u
  4876. 0 O
  4877. 1 g
  4878. 1 R
  4879. 2 j
  4880. 189.3625 299.9375 m
  4881. 204.8625 284.4375 l
  4882. 189.675 269.25 l
  4883. 173.6125 285.3125 l
  4884. 189.3625 299.9375 l
  4885. b
  4886. 188.9875 283.1875 m
  4887. 190.55 284.875 l
  4888. 191.55 286.125 192.675 286 v
  4889. 193.8 285.875 196.4875 285.9375 y
  4890. 201.675 280.8125 l
  4891. 202.1125 274.6875 l
  4892. 199.05 276.5 l
  4893. 194.8625 276.5625 l
  4894. 192.7618 276.8316 191.8 277.3125 v
  4895. 190.55 277.9375 188.9875 279.375 y
  4896. 188.4116 280.3307 188.175 281.75 v
  4897. 188.1125 282.125 189.2375 282.1875 189.8 281.625 c
  4898. 190.1187 281.3063 191.3625 279.625 y
  4899. 192.925 279.6875 l
  4900. 194.3625 280.9375 l
  4901. 193.8625 282.0625 l
  4902. 192.4875 284.1875 191.2375 282.8125 v
  4903. 190.2974 281.7784 188.7375 282.4375 188.9875 283.1875 c
  4904. b
  4905. 1 O
  4906. 0 g
  4907. 0 j
  4908. 201.675 281.5 m
  4909. 204.6125 281.1875 l
  4910. 204.6125 273.4375 l
  4911. 202.3625 273.4375 l
  4912. 199.9875 275.9375 l
  4913. 202.55 273.5625 201.675 281.5 v
  4914. f
  4915. 198.1125 281.5625 m
  4916. 198.1125 280.5 l
  4917. 190.8625 280.5 l
  4918. 189.8 281.625 l
  4919. 198.1125 281.5625 l
  4920. f
  4921. 188.175 281.75 m
  4922. 185.2375 281.75 l
  4923. 184.8 280.5625 185.675 280.5625 v
  4924. 186.55 280.5625 188.425 280.5625 y
  4925. 188.175 281.75 l
  4926. f
  4927. U
  4928. u
  4929. 0 O
  4930. 1 g
  4931. 1 R
  4932. 0 G
  4933. 287.1568 70.8232 m
  4934. 291.309 68.7524 l
  4935. 295.4352 63.9041 l
  4936. 295.4225 57.0195 l
  4937. 292.7036 52.9395 l
  4938. 288.2955 50.0485 l
  4939. 282.5532 49.9688 l
  4940. 277.724 52.8455 l
  4941. 274.2937 57.0046 l
  4942. 274.3132 63.6422 l
  4943. 278.5437 68.7977 l
  4944. 282.5255 70.8611 l
  4945. 287.1568 70.8232 l
  4946. b
  4947. 0 g
  4948. 284.2902 60.4062 m
  4949. 285.7902 60.4062 l
  4950. 285.7902 58.4062 l
  4951. 285.2902 56.9062 l
  4952. 285.2902 53.4062 l
  4953. 284.2902 53.4062 l
  4954. 284.2902 60.4062 l
  4955. f
  4956. u
  4957. 1 R
  4958. 0 G
  4959. 2 w
  4960. 284.7902 71.6562 m
  4961. S
  4962. 0 O
  4963. 1 g
  4964. 1 w
  4965. 286.1405 67.4062 m
  4966. 286.6374 67.4062 287.0402 67.8091 287.0402 68.306 C
  4967. 287.0402 75.0064 L
  4968. 287.0402 75.5033 286.6374 75.9062 286.1405 75.9062 C
  4969. 283.44 75.9062 L
  4970. 282.9431 75.9062 282.5402 75.5033 282.5402 75.0064 C
  4971. 282.5402 68.306 L
  4972. 282.5402 67.8091 282.9431 67.4062 283.44 67.4062 C
  4973. 286.1405 67.4062 L
  4974. b
  4975. U
  4976. 1 J
  4977. 283.0402 77.6562 m
  4978. 286.2902 77.6562 l
  4979. S
  4980. 1 O
  4981. 0 g
  4982. 0 J
  4983. 285.4152 80.1562 m
  4984. 283.5402 81.1562 281.7902 81.7812 v
  4985. 280.0402 82.4062 279.9152 81.5312 278.5402 81.6562 c
  4986. 277.2902 80.5312 280.2902 81.1562 v
  4987. 282.1652 81.2812 282.9152 80.0312 v
  4988. 283.6652 78.7812 284.2902 78.9062 284.7902 79.0312 c
  4989. 285.2902 79.1562 286 79.125 285.4152 80.1562 c
  4990. f
  4991. u
  4992. 276.759 80.5245 m
  4993. 277.1251 80.5245 277.4219 80.8213 277.4219 81.1875 c
  4994. 277.4219 81.5535 277.1251 81.8504 276.759 81.8504 c
  4995. 276.3928 81.8504 276.096 81.5535 276.096 81.1875 c
  4996. 276.096 80.8213 276.3928 80.5245 276.759 80.5245 c
  4997. f
  4998. 276.509 80.9375 m
  4999. F
  5000. U
  5001. u
  5002. 273.4777 80.0558 m
  5003. 273.8438 80.0558 274.1407 80.3526 274.1407 80.7187 c
  5004. 274.1407 81.0848 273.8438 81.3816 273.4777 81.3816 c
  5005. 273.1116 81.3816 272.8148 81.0848 272.8148 80.7187 c
  5006. 272.8148 80.3526 273.1116 80.0558 273.4777 80.0558 c
  5007. f
  5008. 273.7277 80.9687 m
  5009. F
  5010. U
  5011. u
  5012. 270.6027 79.6808 m
  5013. 270.9688 79.6808 271.2657 79.9776 271.2657 80.3437 c
  5014. 271.2657 80.7098 270.9688 81.0066 270.6027 81.0066 c
  5015. 270.2366 81.0066 269.9398 80.7098 269.9398 80.3437 c
  5016. 269.9398 79.9776 270.2366 79.6808 270.6027 79.6808 c
  5017. f
  5018. 270.8527 80.5937 m
  5019. F
  5020. U
  5021. u
  5022. 267.8527 79.6808 m
  5023. 268.2188 79.6808 268.5157 79.9776 268.5157 80.3437 c
  5024. 268.5157 80.7098 268.2188 81.0066 267.8527 81.0066 c
  5025. 267.4866 81.0066 267.1898 80.7098 267.1898 80.3437 c
  5026. 267.1898 79.9776 267.4866 79.6808 267.8527 79.6808 c
  5027. f
  5028. 267.6027 80.0937 m
  5029. F
  5030. U
  5031. U
  5032. 0 To
  5033. 1 0 0 1 191.0686 223.4483 0 Tp
  5034. TP
  5035. -32.9014 0 Td
  5036. 0 Tr
  5037. /_Helvetica 8 Tf
  5038. 0 Ts
  5039. 100 Tz
  5040. 0 Tt
  5041. 0 TA
  5042. 0 0 5 TC
  5043. 100 100 200 TW
  5044. 0 0 0 Ti
  5045. 1 Ta
  5046. 0 Tq
  5047. 9 0 Tl
  5048. 0 Tc
  5049. 0 Tw
  5050. (Sequence grabber) Tx
  5051. (\r) TX 
  5052. -8.8555 -9 Td
  5053. (component \(type 'barg'\)) Tx 
  5054. (\r) TX 
  5055. TO
  5056. 0 To
  5057. 1 0 0 1 189.3 320 0 Tp
  5058. TP
  5059. -28.4453 0 Td
  5060. 0 Tr
  5061. 10 0 Tl
  5062. (Movie recording) Tx
  5063. (\r) TX 
  5064. 9.3291 -10 Td
  5065. (application) Tx 
  5066. (\r) TX 
  5067. TO
  5068. 0 To
  5069. 1 0 0 1 284.2686 30.4482 0 Tp
  5070. TP
  5071. -28.2305 0 Td
  5072. 0 Tr
  5073. (Sound digitizing) Tx
  5074. (\r) TX 
  5075. 11.5625 -10 Td
  5076. (hardware) Tx 
  5077. (\r) TX 
  5078. TO
  5079. 0 To
  5080. 1 0 0 1 96.5 167.5 0 Tp
  5081. TP
  5082. 0 Tr
  5083. 0 O
  5084. (\r) TX 
  5085. TO
  5086. 0 To
  5087. 1 0 0 1 97.5806 181.4483 0 Tp
  5088. TP
  5089. -43.5713 0 Td
  5090. 0 Tr
  5091. 1 O
  5092. 9 0 Tl
  5093. (Sequence grabber video) Tx
  5094. (\r) TX 
  5095. 8.6699 -9 Td
  5096. (channel component) Tx
  5097. (\r) TX 
  5098. -12.6074 -9 Td
  5099. (\(type 'sgch', subtype 'vide'\)) Tx 
  5100. (\r) TX 
  5101. TO
  5102. 0 To
  5103. 1 0 0 1 286.2686 181.4482 0 Tp
  5104. TP
  5105. -44.9072 0 Td
  5106. 0 Tr
  5107. (Sequence grabber sound) Tx
  5108. (\r) TX 
  5109. 10.0059 -9 Td
  5110. (channel component) Tx
  5111. (\r) TX 
  5112. -13.9434 -9 Td
  5113. (\(type 'sgch', subtype 'soun'\)) Tx 
  5114. (\r) TX 
  5115. TO
  5116. 0 To
  5117. 1 0 0 1 36.5 130.4482 0 Tp
  5118. TP
  5119. -25.1143 0 Td
  5120. 0 Tr
  5121. (Video digitizer) Tx
  5122. (\r) TX 
  5123. -15.9756 -9 Td
  5124. (component \(type 'vdig'\)) Tx 
  5125. (\r) TX 
  5126. TO
  5127. 0 To
  5128. 1 0 0 1 160.33 130.4482 0 Tp
  5129. TP
  5130. -33.1123 0 Td
  5131. 0 Tr
  5132. (Image compressor) Tx
  5133. (\r) TX 
  5134. -9.085 -9 Td
  5135. (component \(type 'imco'\)) Tx 
  5136. (\r) TX 
  5137. TO
  5138. 0 To
  5139. 1 0 0 1 285 125.4482 0 Tp
  5140. TP
  5141. -22.6709 0 Td
  5142. 0 Tr
  5143. (Sound driver) Tx 
  5144. (\r) TX 
  5145. TO
  5146. 0 To
  5147. 1 0 0 1 35.75 30.25 0 Tp
  5148. TP
  5149. -26.8945 0 Td
  5150. 0 Tr
  5151. 10 0 Tl
  5152. (Video digitizing) Tx
  5153. (\r) TX 
  5154. 10.2266 -10 Td
  5155. (hardware) Tx 
  5156. (\r) TX 
  5157. TO
  5158. u
  5159. 25.3812 67.1125 m
  5160. 30.8487 67.1125 l
  5161. 30.8487 65.8975 l
  5162. 28.8912 64.0075 l
  5163. 28.6887 64.6825 27.8787 64.885 y
  5164. 26.5287 65.0875 26.1912 64.4125 v
  5165. 25.8537 63.7375 23.9637 63.8725 y
  5166. 22.8162 65.02 21.6012 65.02 y
  5167. 19.9812 65.02 l
  5168. 19.9812 56.9875 l
  5169. 21.1961 56.9875 l
  5170. 23.3562 56.9875 24.3012 58.4725 25.3812 58.3375 c
  5171. 26.4612 58.2025 26.3937 57.2575 28.3512 57.2575 c
  5172. 30.3087 57.2575 30.3087 56.92 y
  5173. 31.0512 55.5025 31.7262 55.57 y
  5174. 45.2937 55.57 l
  5175. 51.7738 62.455 l
  5176. 51.7738 71.1625 l
  5177. 50.1538 72.85 l
  5178. 47.6225 73.9638 l
  5179. 45.0237 76.5625 l
  5180. 39.6237 76.5625 l
  5181. 36.1137 73.0525 l
  5182. 30.9837 73.0525 l
  5183. 29.4312 74.2675 l
  5184. 22.6137 74.2675 20.8587 74.2675 20.8587 71.9725 c
  5185. 20.8587 69.7749 25.3812 70.0825 y
  5186. 25.3812 67.1125 l
  5187. f
  5188. 0 O
  5189. 1 g
  5190. 0.27 w
  5191. 22.0737 64.1425 m
  5192. 22.0737 58 l
  5193. 20.5886 58 l
  5194. 20.5886 64.1425 l
  5195. 22.0737 64.1425 l
  5196. f
  5197. 26.5287 63.4 m
  5198. 26.5287 58.7425 l
  5199. 27.4062 57.19 28.6212 58.7425 v
  5200. 28.6212 63.4 l
  5201. 27.7437 65.2225 26.5287 63.4 v
  5202. f
  5203. 25.9887 72.04 m
  5204. 28.4187 72.04 l
  5205. 28.4187 67.9225 l
  5206. 25.9887 67.9225 l
  5207. 25.9887 72.04 l
  5208. f
  5209. 29.1612 72.04 m
  5210. 31.0512 72.04 l
  5211. 31.0512 67.99 l
  5212. 29.1612 67.99 l
  5213. 29.1612 72.04 l
  5214. f
  5215. u
  5216. 36.0462 67.99 m
  5217. 36.0462 72.04 L
  5218. 31.6587 72.04 L
  5219. 31.6587 67.99 L
  5220. 36.0462 67.99 L
  5221. f
  5222. 33.8525 70.015 m
  5223. F
  5224. U
  5225. 37.0587 72.31 m
  5226. 37.7337 73.93 38.4087 72.31 v
  5227. 38.4087 67.5175 l
  5228. 37.8687 66.1675 37.0587 67.45 v
  5229. 37.0587 72.31 l
  5230. f
  5231. 32.1987 66.64 m
  5232. 36.3162 66.64 l
  5233. 38.0712 65.8975 36.4512 65.56 v
  5234. 32.3337 65.56 l
  5235. 30.4437 65.6275 32.1987 66.64 v
  5236. f
  5237. 38.4762 74.065 m
  5238. 40.1637 75.685 l
  5239. 44.8212 75.685 l
  5240. 46.7112 74.065 l
  5241. 47.2512 72.9175 45.6312 73.525 v
  5242. 43.8762 74.6725 l
  5243. 41.3787 74.6725 l
  5244. 39.3537 73.1875 l
  5245. 37.7337 72.6475 38.4762 74.065 v
  5246. f
  5247. 39.5562 72.58 m
  5248. 39.5562 66.37 l
  5249. 39.5562 65.8975 40.2312 65.83 v
  5250. 40.9062 65.7625 42.5262 65.0875 42.7287 63.8725 c
  5251. 42.7962 62.3875 l
  5252. 50.8288 62.3875 l
  5253. 51.4363 62.185 51.3688 63.265 v
  5254. 51.2719 64.8145 51.3688 70.0825 y
  5255. 51.5038 72.1075 50.4238 70.825 v
  5256. 49.9513 70.15 49.2762 70.15 v
  5257. 49.2762 69.6775 l
  5258. 50.4238 69.6775 50.4238 68.7325 v
  5259. 50.1538 68.1925 49.2088 68.26 v
  5260. 49.2088 67.18 l
  5261. 50.5588 67.2475 50.4913 66.505 v
  5262. 50.6938 65.7625 49.3438 65.7625 v
  5263. 49.3438 65.02 l
  5264. 50.4913 65.3575 50.4913 64.0075 v
  5265. 48.1962 64.0075 l
  5266. 48.1962 71.365 l
  5267. 49.7487 71.2975 49.8162 72.04 v
  5268. 50.0187 72.58 48.3312 72.58 v
  5269. 46.6437 72.58 39.5562 72.58 y
  5270. f
  5271. 29.7012 58.945 m
  5272. 41.9187 58.945 l
  5273. 41.9187 63.67 l
  5274. 41.9862 64.75 40.4337 64.75 v
  5275. 38.8812 64.75 31.1187 64.75 y
  5276. 29.7012 64.8175 29.7012 63.4 v
  5277. 29.7012 61.9825 29.7012 58.945 y
  5278. f
  5279. u
  5280. u
  5281. 0 g
  5282. 33.6162 62.3875 m
  5283. 33.9517 62.3875 34.2237 62.6595 34.2237 62.995 C
  5284. 34.2237 62.995 L
  5285. 34.2237 63.3305 33.9517 63.6025 33.°¿&6162 63.6025 C
  5286. 30.9162 63.6025 L
  5287. 30.5807 63.6025 30.3087 63.3305 30.3087 62.995 C
  5288. 30.3087 62.995 L
  5289. 30.3087 62.6595 30.5807 62.3875 30.9162 62.3875 C
  5290. 33.6162 62.3875 L
  5291. f
  5292. 32.2662 62.995 m
  5293. F
  5294. U
  5295. u
  5296. 36.7212 62.455 m
  5297. 37.0567 62.455 37.3287 62.727 37.3287 63.0625 C
  5298. 37.3287 63.0625 L
  5299. 37.3287 63.398 37.0567 63.67 36.7212 63.67 C
  5300. 35.6412 63.67 L
  5301. 35.3057 63.67 35.0337 63.398 35.0337 63.0625 C
  5302. 35.0337 63.0625 L
  5303. 35.0337 62.727 35.3057 62.455 35.6412 62.455 C
  5304. 36.7212 62.455 L
  5305. f
  5306. 36.1812 63.0625 m
  5307. F
  5308. U
  5309. u
  5310. 40.13 62.5562 m
  5311. 40.4655 62.5562 40.7375 62.8282 40.7375 63.1638 C
  5312. 40.7375 63.1638 L
  5313. 40.7375 63.4992 40.4655 63.7713 40.13 63.7713 C
  5314. 39.05 63.7713 L
  5315. 38.7145 63.7713 38.4425 63.4992 38.4425 63.1638 C
  5316. 38.4425 63.1638 L
  5317. 38.4425 62.8282 38.7145 62.5562 39.05 62.5562 C
  5318. 40.13 62.5562 L
  5319. f
  5320. 39.59 63.1638 m
  5321. F
  5322. U
  5323. u
  5324. 40.1975 60.2612 m
  5325. 40.533 60.2612 40.805 60.5332 40.805 60.8687 C
  5326. 40.805 60.8687 L
  5327. 40.805 61.2042 40.533 61.4762 40.1975 61.4762 C
  5328. 39.1175 61.4762 L
  5329. 38.782 61.4762 38.51 61.2042 38.51 60.8687 C
  5330. 38.51 60.8687 L
  5331. 38.51 60.5332 38.782 60.2612 39.1175 60.2612 C
  5332. 40.1975 60.2612 L
  5333. f
  5334. 39.6575 60.8687 m
  5335. F
  5336. U
  5337. u
  5338. 36.8225 60.1937 m
  5339. 37.158 60.1937 37.43 60.4657 37.43 60.8012 C
  5340. 37.43 60.8012 L
  5341. 37.43 61.1367 37.158 61.4087 36.8225 61.4087 C
  5342. 35.7425 61.4087 L
  5343. 35.4069 61.4087 35.135 61.1367 35.135 60.8012 C
  5344. 35.135 60.8012 L
  5345. 35.135 60.4657 35.4069 60.1937 35.7425 60.1937 C
  5346. 36.8225 60.1937 L
  5347. f
  5348. 36.2825 60.8012 m
  5349. F
  5350. U
  5351. u
  5352. 31.9962 60.2275 m
  5353. 31.9962 61.24 L
  5354. 30.9837 61.24 L
  5355. 30.9837 60.2275 L
  5356. 31.9962 60.2275 L
  5357. f
  5358. 31.4899 60.7337 m
  5359. F
  5360. U
  5361. U
  5362. U
  5363. u
  5364. 1 w
  5365. 168.5 166.5 m
  5366. N
  5367. U
  5368. %%PageTrailer
  5369. gsave annotatepage grestore showpage
  5370. %%Trailer
  5371. Adobe_IllustratorA_AI3 /terminate get exec
  5372. Adobe_typography_AI3 /terminate get exec
  5373. Adobe_customcolor /terminate get exec
  5374. Adobe_cshow /terminate get exec
  5375. Adobe_cmykcolor /terminate get exec
  5376. Adobe_packedarray /terminate get exec
  5377. %%EOF
  5378. ˙◊#ˇ ˇˇˇˇ#◊ 
  5379. d,     Helvetica
  5380. .°dONLNd !.ª+?ICOMPONENT TRIVIA #1"66# 676Æ"6Ø#"76"7Ø
  5381.     °dONLNd7!B*TThe original name for the Component Manager (as conceived of by Bruce “Of course the"L6"LذdONLNdiC!Nt* Sfeature set is frozen!” Leak) was the Thing Manager. Components were referred to as"`6 "`Ø °dONLNdΩO!Z|* V“things” (as were the QuickTime project schedules, the significance of which engineers"l6 "lØ °dONLNd[!fv* Xcouldn’t easily grasp). The use of this terminology led to one of two conditions in most"x6 "xØ °dONLNdmg!r~* VQuickTime engineers: in some, an irrepressible compulsion to make “thing” puns, and in"Ñ6 "ÑØ °dONLNdƒs!~É* Xothers, perhaps as a backlash against the former, an almost pathological aversion to the"ê6 "êØ °dONLNd!ä⁄* /use of the word “thing” in normal conversation."ú6 "úØ "∏6# ∏7∏Æ"∏Ø#"®6"®Ø, Palatino
  5382. °dONLNdMß≥^(œ6HNote that this article doesn’t spend a great deal of time explaining how°dONLNdñ≥ø* Mapplications can find and use components. We assume that you’ve invested some°dONLNd‰øÀv* effort in reading the °dONLNd˙øvÀ˛)^QuickTime Developer’s Guide°dONLNdø˛Ài)à (part of the QuickTime°dONLNd-À◊Z(Û6JDeveloper’s Kit). If you haven’t, we strongly urge you to do so, since the°dONLNdx◊„l* Developer’s Guide°dONLNdâ◊l„â)T> contains the definitive description of the Component Manager.
  5383.     °dONLNd»Ùˇ”(6SHOULD YOU WRITE A COMPONENT?
  5384. °dONLNdÊˇ b* GOK, components sound interesting, but should you write one? Why write a°dONLNd. v* Ncomponent when you can just code the functionality you need directly into your°dONLNd}#à* Qapplication or write a device driver? Here are a few reasons to choose components°dONLNdœ#/|* over the alternatives:°dONLNdÊ5+A1+•°dONLNdË57A`) BComponents are easier for applications to use. Client applications°dONLNd+A7MJ* <don’t have to know what they’re looking for before opening a°dONLNdhM7YQ* @service. This is different from device drivers, where open calls°dONLNd©Y7eT* =must provide either a driver name or a refNum. An application°dONLNdÁe7q7* 7can simply tell the Component Manager, “I’m looking for°dONLNdq7}V* ?somebody to do this for me. Is anybody available?” In addition,°dONLNd_}7â"* 5clients don’t need to set up parameter blocks or make°dONLNdïâ7ï^* Acontrol/status calls to use components. Armed with the API of the°dONLNd◊ï7°[* @component type, the caller simply makes normal function calls to°dONLNd°7≠B* 7the component, and the Component Manager does the work.°dONLNdP≥+ø1(€I•°dONLNdR≥7øW) >Components are more flexible. You can modify the behavior of a°dONLNdëø7ÀD* :component by overriding its capabilities without adversely°dONLNdÃÀ7◊U* <affecting the application. The Component Manager enables the°dONLNd    ◊7„`* Acomponent to communicate its capabilities to clients dynamically.°dONLNdKÈ+ı1(I•°dONLNdMÈ7ı]) ?Components allow you to design more flexible applications. They°dONLNdçı7]* Ccan be used to divide the functional aspects of an application into°dONLNd—7
  5385. N* =parts. For example, a word processing application might use a°dONLNd    
  5386. 7:* 8spelling checker component, a thesaurus component, and a°dONLNd    H7%>* 8grammar checker component. If the thesaurus component is x4x&,Times
  5387. ({) 
  5388. +
  5389. 9
  5390. 4ìÚ·Ø
  5391. (Ú*1TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  5392. )”
  5393. December 1992ˇ¶◊#ˇ ˇˇˇˇ#◊ 
  5394. d, Palatino
  5395. .°dONLNdµ$–+”@>updated, the application code doesn’t have to change at all. A°dONLNd?$µ0fl* @user can simply replace the old thesaurus component with the new°dONLNdÄ0µ<«* one.°dONLNdÖB©NØ(j«•°dONLNdáBµN”) =Components are easier to implement than device drivers. There°dONLNd≈NµZ⁄* Bare no declaration structures, driver headers, assembly code glue,°dONLNdZµfÃ* >installation INITs, or any of the peculiarities that come with°dONLNdGfµr˘* device drivers.°dONLNdWx©ÑØ(†«•°dONLNdYxµÑÕ) =Components are easier to debug than device drivers. No longer°dONLNdóѵêÿ* Bwill you be walking the unit table to find your driver so that you°dONLNd⁄êµú‡* Dcan set a breakpoint at your control call dispatcher. You can easily°dONLNdúµ®›* Band effectively debug your code using a source-level debugger such°dONLNdb®µ¥R* as Symantec’s THINK C Debugger.°dONLNdÇ¿ñÃ(Ë¥NNow that you know the advantages of components, you have to decide whether the°dONLNd—Ãñÿ
  5396. * Tfunctionality you need is a good candidate for a component. To do this, ask yourself°dONLNd&ÿñ‰◊* the following:°dONLNd5Í©ˆØ+•°dONLNd7͵ˆ÷) ADo I anticipate reusing this functionality in other applications?°dONLNdyˆµ≠* 5Components are ideal for providing services that many°dONLNdص* applications can use.°dONLNd≈© Ø(<«•°dONLNd«µ ∞) 8Do I anticipate having to modify certain aspects of this°dONLNd µ,¡* <functionality in the future? Functionality encapsulated in a°dONLNd=,µ8Ã* <component can be extended or modified without disturbing the°dONLNdz8µDE* !original interface specification.°dONLNdúJ©VØ(r«•°dONLNdûJµV–) AIs there a benefit to users in establishing a common API for this°dONLNd‡Vµb”* Afunctionality, so that other developers can use or extend it? You°dONLNd"bµnæ* ;might want to be able to allow third parties to extend your°dONLNd^nµz›* ?application without having to expose detailed information about°dONLNdûzµÜ⁄* Ayour application’s internal data structures. For example, many of°dONLNd‡ܵíÿ* ?the “plug-in” modules for today’s popular graphics applications°dONLNd íµûz* *could easily be implemented as components.°dONLNdK™ñ∂(“¥PA “yes” to more than one of these questions means that components are probably a°dONLNdú∂ñ¬
  5397. * Tgood approach for your next product. But you still have one last question to answer:°dONLNdÒ¬ñŒˇ* Nhas someone else already written a component that solves your problem? To find°dONLNd@Œñ⁄ * Nout, you need to contact Apple’s Component Registry group (AppleLink REGISTRY)°dONLNdè⁄ñÊ* Pand ask them. These folks maintain a database of all registered component types,°dONLNd‡ÊñÚ * Ssubtypes, and manufacturers, as well as the corresponding APIs (if they’re publicly°dONLNd4Úñ˛—* Cavailable). A check with the Registry is mandatory for anyone who’s°dONLNdx˛ñ
  5398. 7* "contemplating writing a component.°dONLNdúñ"    *VIf after all this you find that you’re still about to embark into uncharted territory,°dONLNdÛ"ñ.ê* 7read on, and we’ll endeavor to illuminate your passage. xBx/,Times
  5399. ({& ,     Helvetica
  5400. +
  5401. 10
  5402. 4ìq·3
  5403. +md)e)v)e)l)o)p)  
  5404. )
  5405. December 1992ˇî◊#ˇ ˇˇˇˇ#◊ 
  5406. d,     Helvetica
  5407. .°dONLNd !.ª+?ICOMPONENT TRIVIA #2"62# 636("6)#"72"7)
  5408.     °dONLNd6!A˘*4The original component type for the sequence grabber°dONLNdJA!L˙* 5component was, logically enough, 'grab'. The engineer°dONLNdÄL!Wˆ* 5primarily responsible for the sequence grabber, Peter°dONLNd∂W!bÎ* 2Hoddie, requires massive infusions of Diet Coke to°dONLNdÈb!m¯* 8function properly. During a particularly intense bout of°dONLNd"m!x* 6engineering mania, the Diet Coke supply was exhausted;°dONLNdYx!ÉÌ* /unbeknownst to anyone, Peter became temporarily°dONLNdã6A(];4tdyslexic and changed the sequence grabber component°dONLNd¿ALÎ* 4type to 'barg'. The change was never noticed, and it°dONLNdıLW›* /caused no real harm, other than the wasted time°dONLNd%Wbˇ* :developers spent trying to figure out what 'barg' might be°dONLNd`bm˛* 4an acronym for (Boffo Audio Reverb Gadget? Bodacious°dONLNdïmxÍ* 1Analog Reference Gizmo?). Peter’s brain has since°dONLNd«xÉπ* *returned to its (relatively) normal state.
  5409. 4¨-≠)"L2`"≠2# ≠3≠,"≠- ≠.≠("L)`"≠)#
  5410. °dONLNdÙ°Ø√( 6COMPONENT BASICS 101, Palatino
  5411. °dONLNd    ≥øâ*OClient applications use the Component Manager to access components. As shown in°dONLNdYøÀv* KFigure 2, the Component Manager acts as a mediator between an application’s°dONLNd•À◊Ñ* Rrequests for component services and a component’s execution of those requests. The°dONLNd¯◊„í* Component Manager uses a °dONLNd◊í„Ë)zcomponent instance°dONLNd#◊Ë„~)V  to determine which component is°dONLNdD„Ôê( 6Vneeded to satisfy an application’s request for services. An instance can be thought of°dONLNdõÔ˚l* Kas an application’s connection to a component. We’ll have more to say about°dONLNdÁ˚ö* component instances later on.
  5412. 46‘í"46°d
  5413. ONLNfH"‘í°d
  5414. ONLNfp∏†Ç†é43546ò,@]@]46tí’’ ‡˛¿ÌÒ
  5415. |Ês;ÛòÏ¿Ò
  5416. ‘ôT©⁄ç2ÄÒ
  5417. ‘ôW©jµ>ÄÒ
  5418. ‘ôT)J•0Ä    „TÊS)zúÏÄ
  5419. Óĸ Ô
  5420. Óĸ¿Ô’@ Ù
  5421. `ÓùL‹Œ(åĢç«@‹ÍfÊ‚ÄÔSRm*)˘IÄröìi°Ó>SQ≠*(ûĢüIA≤öçi†ÄÔ"SS-*(P@˘QI!2öôi†@Ô#ùLÏ 8åĢçG@¸Ígf†ÄÔ ÄÎ ÄÎ’8˝F0ıѸ
  5422. Dfl9úŒΔ<Ê;`¸
  5423. ô‘…çòÃ˘ÃÊÊ
  5424. A5&U*F6£L¿¸
  5425. &U0ÜQ2©2©¢
  5426. A5&UÍEZ≠O¿¸
  5427. >UËÜQ©2Ø¢
  5428. E5&U
  5429. ER©L@¸
  5430. "UÜQ2©2®¢
  5431. 8’9î Dûß;@¸
  5432. ‹»Öêéö¢˛ ¸˘@˝Ì˛ ¸0˘@˝Ì’ ˝˘ÄĈIJ˛%lòÃ˚çΔÊ˙”õôΔcõ9ò˙    MÛôÃÏ2≥Sbˇ$2&I2™SI¢˘“••BíT¶P˙    ReR§J×îˇ$2'…™SO¢˘“°•BíTß–˙    Re^§y|QÚˇ$2&    2™SH¢˘“••BíT¶˙    SReP§Bƒ—Ŏ$,àôçF¢˘ÚôôBcì9ê˙    çSôL§2≥qbˇÚ ˜¯Ú ˜¯’˝ (ˆ ¯ ˝"    3sò‹‹é3(˙ÕÛçÃÏl¿˘Nng Ã3ú˝#    L“•-4íI®˚3RSR§2ĢJñïl§˝#    D“Ω
  5433. 46íF®˚RS^§2ĢJÜï¨j§˝#    L“°-4&íL®˚3RSP§2ĢJñï,J§˝"    3RòÑé3®˙ÕSçL§,Ģ fe Ï:ú˝ÔËÔË’¸˜Ù˝†¸    3|„s;qπ∏˙ Δ≠gˆnüÃ    L‘î‘©
  5434. RZh˚+)•ïˆñï ì†¸    D‘î◊©
  5435. Rh˚Â˕ïû    L‘î‘)
  5436. RZh˚     •ïˆÜïêT†¸    3T„S)Qô©˙ ΔÂe@˜gïåú®¸˛ÄŸ˛ÄŸ’’’’’’’’’ò,@Ä]@Ä]t6¥í’’¯ˇÄ¸˘ˇ˛˚˘ˇ¯ˇ¯ˇÄ¸˘ˇ˛˚˘ˇ¯ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡`˛¯ˇÅIJ ˘ˇ˛ˇ¯ˇ·‡˛„¯ˇáIJ˘ˇ˛ˇ¯ˇÁ¸ˇ˚¯ˇü˝Ô˘ˇ˛ˇ¯ˇÔ¿˛˚¯ˇø¸ˇÔ˘ˇ˛ˇ¯ˇ„‡˛„¯ˇèIJè˘ˇ˛ˇ¯ˇ‡`˛¯ˇÉIJ ˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇò,Ć]Ć]¥6‘í¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ¯ˇ‡¸¯ˇÄ¸˘ˇ˛ˇ?˘ˇ‡˚¯ˇÄ¸˘ˇ˛ˇ?˘ˇ‡˚¯ˇÄ¸˘ˇ˛ˇ’òÅ^@]HH‡®|äIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  5437. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  5438. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  5439.  
  5440.  
  5441.  ˛êêê@]46tí'ÅÅ£ÅÅ£Å˘ˇ˛ˇ›ˇ˛ˇˇ˛ˇ˛Å›OÅ˙ˇ˛ˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇ˛˝ˇ˛ˇˇˇ˛˛ˇˇˇˇˇÅıQÅ˙ˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ ˇˇˇˇˇˇˇÅÙQÅ˙˛¸"ˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛˛˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇ˛˛ˇˇÅÙQÅ˙ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇÅÙOÅ˘˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˝ˇˇˇ˛ˇ˛ˇˇˇˇÅÙÅÈˇ–ˇÅÓÅÈˇ“ˇˇÅÌÅÅ£&ıˇ˜˛ˇ˜ˇˇê˛Ìˇˇ˜ˇˇˆˇÅÍyˆˇ˝ˇ˛ˇ ˇˇˇˇˇˇ˛ˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇˇ∫ˇ˛ˇˇ˛ˇ˛˛ˇˇ˚ˇˇ˛ˇ˛ˇ ˇˇˇˇˇˇ˛ˇˇˇ˛ˇ˛ˇˇÅÏyˆ#ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇ∫ˇ˛
  5442. ˇˇˇˇˇˇˇ˘˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇÅÎ}˜˛ˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇˇˇˇ˛ˇˇ˛ˇˇˇ˛ˇˇ∫ˇˇˇ˛ˇˇ˛ˇˇ˛¸ˇˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇ˛ˇˇˇˇˇ¸ˇÅÏ|˜ˇ˛ ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˝ˇˇ¸ˇ∫ˇˇ˛ ˇˇˇˇˇ˝#ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˚ˇÅÌu˜ˇ˛˛ˇ˛ˇ    ˇˇˇˇ˛ˇ ˇˇˇˇˇˇ˛˛ˇ˛ˇ˛ˇˇˇ∫ˇ˛ˇˇˇˇ˛˛ˇˇ˚˚ˇ˛ˇ    ˇˇˇˇ˛ˇ
  5443. ˇˇˇˇˇˇ¸ˇÅÏÛˇ˝˛ÅÚ˛˝ˇÅÃÛˇ˝ˇÅÚˇ˝ˇÅÃÅÅ£"˜˛ˇ›˛˛˛ˇ˛ˇˇùˇ˝˛—ˇÅ˙ù¯ˇ˛ˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇ˛˝ˇ˛ˇˇˇ˛˛ˇˇˇˇˇÕˇˇˇˇ˛ˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇ˛ˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇÅ˙ü¯ˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ ˇˇˇˇˇˇˇÃˇˇˇˇˇˇˇˇˇˇ˝ˇ˝ˇˇˇˇ˛#ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÅ˙†¯ˇ¸˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛˛ˇˇˇˇ˛ˇ˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇ˛ˇˇÃ˛ˇ˛˛ˇˇ˛ˇ˛˛ˇˇ˛ˇ˝ˇˇˇ˛˛˛˛˛ˇˇˇˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇˇ˛ˇÅ˙ü¯ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÃˇˇ˛    ˇˇˇˇˇ¸ˇˇ˝ˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇÅ˙ù˜˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˝ˇˇˇ˛ˇ˛ˇˇˇˇÃˇ˛ˇˇ˛ˇ˛ˇˇˇˇ˛ˇ˝ˇˇˇˇ˝ˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇÅ˙Áˇ–ˇΩ˛‘ˇÅ„Áˇ“ˇˇºˇ‘ˇÅ„ÅÅ£)˜ˇˇÿˇ¿ˇÛ˛ˇÙˇ¢ˇ˛ˇ›ˇË˛Îƒ¯ˇˇˇˇ¸˛ˇˇˇˇˇ˛ˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇ¡˛ˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇ˛˛ˇˇˇˇˇ˛ˇˇˇˇˇ¡ˇ˛ˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÚ ˜ˇˇˇ˛0ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ¿ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇˇ¿ˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇÒ ˜ˇˇˇ˛ˇ˛˛ˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ˇˇˇ˛ˇ˛˛ˇˇ˛ˇ¿
  5444. ˇ˛ˇˇˇˇ˝
  5445. ˇˇˇ˛ˇ˛˝ˇˇˇˇ˛ˇ˛ˇˇ˛˛ˇ˛ˇ¿˛¸"ˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛˛˛˛ˇˇ˛˛ˇ˛˛˛ˇ˛ˇˇ˛ˇˇˇÚΔ˜ˇˇˇ˛ˇˇˇ¸ ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇ¿ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇ˝ˇ¿ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇ˝ˇˇˇ˛ˇˇˇˇ˛ˇˇ˚ˇÛ¡˜ˇˇˇ¸˛ˇˇˇ˛ˇ˛
  5446. ˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇˇˇˇ˛ˇ¿˝ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛˛ˇˇˇˇ˛ˇˇˇˇø˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇ˛ˇÚÏˇÈˇÇˇˆˇ¶ˇ∫ÓˇˇËˇÇˇˆˇ¶ˇ∫ÅÅ£+›ˇ˛Èˇˆˇˇ°˛˝ˇÆˇÛ˛ˇÏˇ˛Ú˛·´˜ˇˇˇˇ˛ˇ˛ˇˇˇ˛ˇˇ˛ˇˇˇ˛ˇ¸ˇˇ˛ˇ˛˛ˇ˛
  5447. ˇˇˇˇˇˇΔˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇˇ∂˛ˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˝    ˇˇˇˇˇˇ˝ˇˇ˛ˇ˛ˇ·≤¯$ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˚˛ˇˇˇˇˇˇˇˇˇˇ«&ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ¥ˇˇˇˇˇˇˇˇˇˇˇˇˇ˛
  5448. ˇˇˇˇˇˇ¸
  5449. ˇˇˇˇˇˇ·µ¯ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇ˛˝    ˇˇ˛ˇ˛ˇ˝ˇ˛ˇˇˇ˛ˇˇ˛ˇˇˇˇˇ«˛˛˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛˛ˇˇˇˇ˝ˇ˛ˇˇ¥
  5450. ˇ˛ˇˇˇˇ˝
  5451. ˇˇˇ˛ˇ˛˛˛˛˛ˇˇˇˇ˛ ˇˇˇˇˇˇˇ·µ¯ˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇ«ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˝ˇˇˇˇ¥ˇˇˇˇˇˇˇˇˇˇˇˇˇ˛
  5452. ˇˇˇˇˇˇ˛ ˇˇˇˇˇˇ·©˜ˇˇˇˇˇˇˇˇˇˇ˛
  5453. ˇˇˇˇˇˇˇˇ¸˝ˇˇ˛˛ˇ˛ˇˇ˛ˇˇˇΔ
  5454. ˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ¥˝ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇ˛ˇˇˇ˝˛ˇˇˇ˛ˇ·
  5455. ÅΡÅ∫
  5456. ÅΡÅ∫ÅÅ£“˛˝ˇÛ˛ˇ©ˇ˛îˇflˇˇ÷ê˜ˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇˇˇ˛˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇΔ    ˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇ§ˇˇˇˇ˛ˇˇ¸ˇ˛ˇ˝ˇˇˇˇˇˇˇ˛ˇ÷õ¯&ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇˇ« ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ§ˇˇˇˇˇˇˇˇˇˇ¸ˇˇˇˇ˛ˇˇˇˇ÷õ¯˛˛˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛˛ˇˇˇˇ˝
  5457. ˇ˛ˇ˛ˇˇ˝    ˇˇˇ˛ˇˇ«
  5458. ˇˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇ˛ˇˇˇ˛ˇ§˛ˇ˛ˇˇ˛ˇˇˇ˛ˇ˛ˇ˝ˇˇˇ˛ˇˇˇ˛ˇˇ÷ñ¯ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇˇ«ˇ˝ˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇ§ˇˇ˝
  5459. ˇˇˇˇˇˇ˝ˇ˛ˇˇ¸    ˇˇˇˇˇ÷ù˜
  5460. ˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇ˝˝ˇˇˇ˛ˇˇˇˇˇˇˇˇˇ…    ˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇˇˇ¶ˇ˛ˇˇ˝ˇˇˇˇ˛ˇ˝ˇ˛ˇˇˇ˛ˇˇˇˇÿ
  5461. ÈˇÅź
  5462. ÈˇÅźÅÅ£ÅÅ£ÅÅ£ÅÅ£ÅÅ£ÅÅ£ÅÅ£ÅÅ£ÅÅ£òÅ^@Ä]HH‡®ÄãIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  5463. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  5464. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  5465.  
  5466.  
  5467.  ˛êêê@Ä]t6¥í'ÅÅ£ÅÅ£˘∏ˇÃ∏ˇÃ∏ˇÊ˘HˇˇÃHˇˇÃHˇˇÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇˇˇˇˇˇ˛ˇŒˇ˛ˇ2ˇ˛ˇŒˇ˛ˇ2ˇ˛ˇÚÈ˘Gˇˇˇˇ˛ˇˇ˛ˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇŒ)ˇ˛˛ˇˇˇˇ˛ˇˇ˛ˇˇˇˇ˛ˇˇ˛ˇˇ˛ˇ˛˛ˇŒˇˇˇ˛ˇ˛˛ˇ(˛ˇˇ˛˛ˇˇ˛ˇˇˇ˛ˇˇˇˇ˛ˇÚÈ˘Gˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇŒGˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇŒGˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÚ‚˘ˇ˚ˇ0ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇŒ.ˇˇˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇˇ˛ˇŒ.ˇˇˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇˇ˛ˇÚÈ˘Gˇ˛˛ˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛˛ˇŒGˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇ˛˛ˇˇ˛ˇŒGˇ˛˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇˇ˛˛˛ˇÚˢˇˇ˝ˇ˛ˇ    ˇˇˇˇ˛ˇˇˇˇˇˇˇ˛ˇŒˇ˛ˇ ˇˇˇˇˇ˛ˇ#ˇˇˇˇˇˇˇˇˇ˛ˇŒˇ˛ˇ ˇˇˇˇˇ˛ˇ#ˇˇˇˇˇˇˇˇˇ˛ˇÚÈ˘Gˇˇˇ˛ˇŒGˇˇ˛ˇŒGˇˇ˛ˇÚÈ˘Gˇˇˇ˛ˇŒGˇ˛˛ˇŒGˇˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇˇˇˇˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇˇˇˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒ&ˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇ˛ˇŒGˇ˛ˇÚÁ˘Gˇ˛ˇŒˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ¸ˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇˇˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒˇˇˇˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇˇ˛˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇˇˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚ΢ ˇ˝ˇ"˛ˇ˚ˇˇfiˇˇ˚Gˇ˛ˇ˚ˇˇfiˇˇ˚ˇÌˇ˛ˇÚÈ˘Gˇˇˇˇˇ˛ˇ˝˝ˇ›˝ˇ˛Gˇ˛ˇ˝˝ˇfi˝ˇ˝ˇ˛ˇÔˇˇ˛ˇÚÿ˘ ˇˇˇ˝"ˇˇ˛ˇ—ˇˇ˙ˇ¯ˇ˛ˇ¸ˇ‹˚ˇˇˇÏˇ˛ˇÚŸ˘ˇˇˇ˚!ˇˇ˛ˇ˚ˇ‹˚ˇˇ˛ˇ˝ ˇˇˇˇ˚ˇ˛ˇ–ˇˇˇˇÏˇˇ˛ˇÚŸ˘ˇ˛ˇ˘ ˇˇ˛ˇ˛¸ˇ›˝ˇ˛ˇˇ˚ ˇˇˇ˚ˇˇ˛ˇ˛¸ˇfi¸ˇ˛ˇˇÍˇ˛ˇÚÕ˘ˇˇˇˆˇˇ˛ˇ˚ˇˇfiˇˇ˚ˇˇ˙ıˇ˙ˇ˛ˇ¸˛ˇfiˇˇ˚ˇˇÍˇ˛ˇÚ¥˘ˇˇˇÙˇˇ˛ˇŒˇˇÁˇ˛ˇŒˇˇÍˇ˛ˇÚ∂˘ˇˇˇÚˇˇ˛ˇŒˇˇ˘¯ˇ¯ˇ˛ˇŒˇˇÍˇ˛ˇÚµ˘ˇˇˇˇˇ˛ˇŒˇˇ˚˜ˇ˜ˇ˛ˇŒˇ˝ˇÌˇ˛ˇÚ∫˘ˇˇˇÓˇˇ˛ˇŒˇˇ˚˜ˇˇˇ˚ˇ˛ˇŒˇˇˇˇÌˇˇ˛ˇÚ∂˘ˇˇˇÏˇˇ˛ˇŒˇˇ¸¸ˇ¯ˇ˚ˇ˛ˇŒˇˇÌ˛ˇ˛ˇÚ∑˘ˇˇˇÍˇˇ˛ˇŒˇˇ¸˛ˇ˚ˇ˛˛ˇ¸ˇ˛ˇŒˇˇÎˇ˛ˇÚ±˘ˇˇˇËˇˇ˛ˇŒˇˇ˝˝ˇ¸˘ˇ¸ˇ˛ˇŒˇˇÎˇ˛ˇÚ≥˘ˇˇˇÚ˘ˇ˝ˇˇ˛ˇŒˇˇ˝˛ˇ¸˜ˇ˝ˇ˛ˇŒˇˇÎˇ˛ˇÚº˘ˇˇˇÛˇˇ˚ˇˇ˝ˇˇ˛ˇŒˇˇ˝˛ˇ¸¸ˇ˝ˇ˝ˇ˛ˇŒˇˇÎˇ˛ˇÚΩ˘ˇˇˇıˇˇ˘ˇˇ˛ˇˇ˛ˇŒˇˇ˝˛ˇ˛˚ˇ˛˛ˇ˝ˇ˛ˇŒˇˇÎˇ˛ˇÚº˘ˇˇˇˆ˚ˇ¸ˇˇˇˇ˛ˇŒˇˇ˝˛ˇ˝˝ˇ˝˛ˇ˝ˇ˛ˇŒˇˇÎˇ˛ˇÚ∂˘ˇˇˇ˙Ùˇ¸ˇ˛ˇŒˇˇ˝˝ˇ˜˝ˇ˝ˇ˛ˇŒˇˇÎˇ˛ˇÚ∏˘ˇˇˇ˚Ùˇ˛˝ˇ˛ˇŒˇˇ˝˝ˇ˜˛ˇ¸ˇ˛ˇŒˇˇÌˇˇ˛ˇÚ∏˘ˇˇˇ˘˚ˇ˙˝ˇ˛ˇŒˇˇ¸˝ˇ˘¸ˇ˝ˇ˛ˇŒˇˇÌ˛ˇ˛ˇÚòÅ^Ć]HH‡®|åIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  5468. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  5469. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  5470.  
  5471.  
  5472.  ˛êêêĆ]¥6‘í'π˘ˇˇˇ˘ˇˇ˜˝ˇ˛ˇŒˇˇ¸¸ˇ¸˘ˇ˛ˇ˛ˇŒˇ˝ˇÌˇ˛ˇÚ∏˘ˇˇˇ˘˛ˇ˘˝ˇ˛ˇŒˇˇ˚˚ˇ˜ˇ˛ˇ˛ˇŒˇˇÍˇ˛ˇÚµ˘ˇˇˇ¯˘ˇ˝ˇ˛ˇŒˇˇ˙Òˇ˛ˇ˛ˇŒˇˇÍˇ˛ˇÚª˘ˇˇˇˆˇˇ˚ˇ˛ˇŒˇˇ¯˙ˇ¸ˇ˝ˇ˛ˇŒˇˇÍˇ˛ˇÚº˘ˇˇˇ¯ˇˇ¸ˇ˛ˇŒˇˇˇˆ˛ˇ˜ˇˇ˛ˇŒˇˇÍˇ˛ˇÚæ˘ˇˇˇ˙ˇˇ˝ˇ˛ˇŒˇ¯ˇ˙˜ˇ˛ˇŒˇˇˇÎˇ˛ˇÚ—˘ ˇˇˇ¸!ˇˇ˛ˇŒ ˇˇˇ˙ˇˇ˛ˇŒˇˇÏˇˇ˛ˇÚÃ˘!ˇˇˇ˛"ˇˇ˛ˇŒˇıˇ˛ˇŒˇ͡˛ˇÚÈ˘Gˇˇˇˇˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘!ˇ˛ˇ"˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚÈ˘Gˇ˛ˇŒGˇ˛ˇŒGˇ˛ˇÚ˘∂ˇŒ∂ˇŒ∂ˇÚ˜∏ˇÃ∏ˇÃ∏ˇÚ˜∏ˇÃ∏ˇÃ∏ˇÚÅÅ£†è†É†ø
  5473. d
  5474.     °dONLNd…‘@*ÕFigure 2°dONLNd’‡Ω* %How Applications Work With Components
  5475. °dONLNd5Ú˛è*VConceptually, components consist of two parts: a collection of functions as defined in°dONLNdå˛
  5476. r* Lthe component’s API, and a dispatcher that takes care of routing application°dONLNdŸ
  5477. ç* Urequests to the proper function. These requests are represented by request codes that°dONLNd/"(* the x4x&,Times
  5478. ({) 
  5479. +
  5480. 114ìÚ·Ø
  5481. (Ú*1TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  5482. )”
  5483. December 1992ˇ†æ°¿9pse
  5484. currentpoint
  5485. /picTop exch def
  5486. /picLeft exch def
  5487. psb
  5488. †ø†æ°¿=pse
  5489. currentpoint
  5490. /picBottom exch def
  5491. /picRight exch def
  5492. psb
  5493. †ø†æ°¿[ -142.5 340 206.5 500]
  5494. °¿€1 dict begin /s exch def
  5495. picLeft picTop translate
  5496. picRight picLeft sub s 2 get s 0 get sub div
  5497. picBottom picTop sub s 1 get s 3 get sub div
  5498. scale
  5499. s 0 get neg s 3 get neg translate
  5500. end
  5501. /showpage {} def
  5502. /copypage {} def
  5503. °¿ %!PS-Adobe-3.0 EPSF-3.0
  5504. %%Creator: Adobe Illustrator(TM) 3.2
  5505. %%For: (Diane Wilcox) (Apple Computer, Inc.)
  5506. %%Title: (Woodcock Fig_02MSW)
  5507. %%CreationDate: (10/2/92) (1:21 PM)
  5508. %%BoundingBox: -142.5 340 206.5 500
  5509. %%DocumentProcessColors: Magenta Black
  5510. %%DocumentFonts: Helvetica
  5511. %%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0
  5512. %%+ procset Adobe_cmykcolor 1.1 0
  5513. %%+ procset Adobe_cshow 1.1 0
  5514. %%+ procset Adobe_customcolor 1.0 0
  5515. %%+ procset Adobe_typography_AI3 1.0 1
  5516. %%+ procset Adobe_IllustratorA_AI3 1.0 1
  5517. %AI3_ColorUsage: Color
  5518. %AI3_TemplateBox: 39.5 302 39.5 302
  5519. %AI3_TileBox: -236.5 -63 315.5 667
  5520. %AI3_DocumentPreview: Macintosh_ColorPic
  5521. %%EndComments
  5522. %%BeginProlog
  5523. %%BeginResource: procset Adobe_packedarray 2.0 0
  5524. %%Title: (Packed Array Operators)
  5525. %%Version: 2.0 
  5526. %%CreationDate: (8/2/90) ()
  5527. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  5528. userdict /Adobe_packedarray 5 dict dup begin put
  5529. /initialize            % - initialize -
  5530. {
  5531. /packedarray where
  5532.     {
  5533.     pop
  5534.     }
  5535.     {
  5536.     Adobe_packedarray begin
  5537.     Adobe_packedarray
  5538.         {
  5539.         dup xcheck
  5540.             {
  5541.             bind
  5542.             } if
  5543.         userdict 3 1 roll put
  5544.         } forall
  5545.     end
  5546.     } ifelse
  5547. } def
  5548. /terminate            % - terminate -
  5549. {
  5550. } def
  5551. /packedarray        % arguments count packedarray array
  5552. {
  5553. array astore readonly
  5554. } def
  5555. /setpacking            % boolean setpacking -
  5556. {
  5557. pop
  5558. } def
  5559. /currentpacking        % - setpacking boolean
  5560. {
  5561. false
  5562. } def
  5563. currentdict readonly pop end
  5564. %%EndResource
  5565. Adobe_packedarray /initialize get exec
  5566. %%BeginResource: procset Adobe_cmykcolor 1.1 0
  5567. %%Title: (CMYK Color Operators)
  5568. %%Version: 1.1 
  5569. %%CreationDate: (1/23/89) ()
  5570. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  5571. currentpacking true setpacking
  5572. userdict /Adobe_cmykcolor 4 dict dup begin put
  5573. /initialize            % - initialize -
  5574. {
  5575. /setcmykcolor where
  5576.     {
  5577.     pop
  5578.     }
  5579.     {
  5580.     userdict /Adobe_cmykcolor_vars 2 dict dup begin put
  5581.     /_setrgbcolor
  5582.         /setrgbcolor load def
  5583.     /_currentrgbcolor
  5584.         /currentrgbcolor load def
  5585.     Adobe_cmykcolor begin
  5586.     Adobe_cmykcolor
  5587.         {
  5588.         dup xcheck
  5589.             {
  5590.             bind
  5591.             } if
  5592.         pop pop
  5593.         } forall
  5594.     end
  5595.     end
  5596.     Adobe_cmykcolor begin
  5597.     } ifelse
  5598. } def
  5599. /terminate            % - terminate -
  5600. {
  5601. currentdict Adobe_cmykcolor eq
  5602.     {
  5603.     end
  5604.     } if
  5605. } def
  5606. /setcmykcolor        % cyan magenta yellow black setcmykcolor -
  5607. {
  5608. 1 sub 4 1 roll
  5609. 3
  5610.     {
  5611.     3 index add neg dup 0 lt
  5612.         {
  5613.         pop 0
  5614.         } if
  5615.     3 1 roll
  5616.     } repeat
  5617. Adobe_cmykcolor_vars /_setrgbcolor get exec
  5618. pop
  5619. } def 
  5620. /currentcmykcolor    % - currentcmykcolor cyan magenta yellow black
  5621. {
  5622. Adobe_cmykcolor_vars /_currentrgbcolor get exec
  5623. 3
  5624.     {
  5625.     1 sub neg 3 1 roll
  5626.     } repeat
  5627. 0
  5628. } def
  5629. currentdict readonly pop end
  5630. setpacking
  5631. %%EndResource
  5632. %%BeginResource: procset Adobe_cshow 1.1 0
  5633. %%Title: (cshow Operator)
  5634. %%Version: 1.1 
  5635. %%CreationDate: (1/23/89) ()
  5636. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  5637. currentpacking true setpacking
  5638. userdict /Adobe_cshow 3 dict dup begin put
  5639. /initialize            % - initialize -
  5640. {
  5641. /cshow where
  5642.     {
  5643.     pop
  5644.     }
  5645.     {
  5646.     userdict /Adobe_cshow_vars 1 dict dup begin put
  5647.     /_cshow        % - _cshow proc
  5648.         {} def
  5649.     Adobe_cshow begin
  5650.     Adobe_cshow
  5651.         {
  5652.         dup xcheck
  5653.             {
  5654.             bind
  5655.             } if
  5656.         userdict 3 1 roll put
  5657.         } forall
  5658.     end
  5659.     end
  5660.     } ifelse
  5661. } def
  5662. /terminate            % - terminate -
  5663. {
  5664. } def
  5665. /cshow                % proc string cshow -
  5666. {
  5667. exch
  5668. Adobe_cshow_vars
  5669.     exch /_cshow
  5670.     exch put
  5671.     {
  5672.     0 0 Adobe_cshow_vars /_cshow get exec
  5673.     } forall
  5674. } def
  5675. currentdict readonly pop end
  5676. setpacking
  5677. %%EndResource
  5678. %%BeginResource: procset Adobe_customcolor 1.0 0
  5679. %%Title: (Custom Color Operators)
  5680. %%Version: 1.0 
  5681. %%CreationDate: (5/9/88) ()
  5682. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  5683. currentpacking true setpacking
  5684. userdict /Adobe_customcolor 5 dict dup begin put
  5685. /initialize            % - initialize -
  5686. {
  5687. /setcustomcolor where
  5688.     {
  5689.     pop
  5690.     }
  5691.     {
  5692.     Adobe_customcolor begin
  5693.     Adobe_customcolor
  5694.         {
  5695.         dup xcheck
  5696.             {
  5697.             bind
  5698.             } if
  5699.         pop pop
  5700.         } forall
  5701.     end
  5702.     Adobe_customcolor begin
  5703.     } ifelse
  5704. } def
  5705. /terminate            % - terminate -
  5706. {
  5707. currentdict Adobe_customcolor eq
  5708.     {
  5709.     end
  5710.     } if
  5711. } def
  5712. /findcmykcustomcolor    % cyan magenta yellow black name findcmykcustomcolor object
  5713. {
  5714. 5 packedarray
  5715. }  def
  5716. /setcustomcolor        % object tint setcustomcolor -
  5717. {
  5718. exch
  5719. aload pop pop
  5720. 4
  5721.     {
  5722.     4 index mul 4 1 roll
  5723.     } repeat
  5724. 5 -1 roll pop
  5725. setcmykcolor
  5726. } def
  5727. /setoverprint        % boolean setoverprint -
  5728. {
  5729. pop
  5730. } def
  5731. currentdict readonly pop end
  5732. setpacking
  5733. %%EndResource
  5734. %%BeginResource: procset Adobe_typography_AI3 1.1 0
  5735. %%Title: (Typography Operators)
  5736. %%Version: 1.0 
  5737. %%CreationDate:(5/31/90) ()
  5738. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  5739. currentpacking true setpacking
  5740. userdict /Adobe_typography_AI3 47 dict dup begin put
  5741. /initialize            % - initialize -
  5742. {
  5743. /TZ
  5744.  where
  5745.     {
  5746.     pop
  5747.     }
  5748.     {
  5749.     Adobe_typography_AI3 begin
  5750.     Adobe_typography_AI3
  5751.         {
  5752.         dup xcheck
  5753.             {
  5754.             bind
  5755.             } if
  5756.         pop pop
  5757.         } forall
  5758.     end
  5759.     Adobe_typography_AI3 begin
  5760.     } ifelse
  5761. } def
  5762. /terminate            % - terminate -
  5763. {
  5764. currentdict Adobe_typography_AI3 eq
  5765.     {
  5766.     end
  5767.     } if
  5768. } def
  5769. % [ number value stream [ array for encoding modification ] modifyEncoding ==> [ modified array ]
  5770. /modifyEncoding
  5771. {
  5772.     /_tempEncode exch ddef
  5773.     
  5774.     % pointer for sequential encodings
  5775.     /_pntr 0 ddef
  5776.     
  5777.     {
  5778.         % get bottom object
  5779.         counttomark -1 roll
  5780.         % is it a mark ?
  5781.         dup type dup /marktype eq         
  5782.         {
  5783.             % exit
  5784.             pop pop exit
  5785.         }
  5786.         {
  5787.             % ... object ... type ....
  5788.             % insert if a nametype
  5789.             /nametype eq
  5790.             {
  5791.                 % insert the name at _pntr and increment pointer
  5792.                 _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll
  5793.                 put
  5794.             }
  5795.             {
  5796.                 % reset _pntr if it's a number
  5797.                 /_pntr exch ddef                    
  5798.             }
  5799.             ifelse
  5800.         }
  5801.         ifelse
  5802.     }
  5803.     loop    
  5804.     
  5805.     % return the modified encoding
  5806.     _tempEncode
  5807. }
  5808. def
  5809. /TE    % Set std platform encoding     % (encoding pairs) TE -
  5810. {
  5811.     StandardEncoding 256 array copy modifyEncoding 
  5812.     /_nativeEncoding exch def
  5813. } def
  5814. % re-define font
  5815. % expected arguments
  5816. % for 'normal fonts : 
  5817. % [ /_Helvetica-Bold/Helvetica-Bold direction fontScript defaultEncoding TZ
  5818. %
  5819. % for cartographic, pictographic, and expert fonts :
  5820. % [ ... number value stream ... /_Symbol/Symbol 
  5821. %    direction fontScript defaultEncoding TZ
  5822. % for blended fonts w/ default encoding :
  5823. % [ /_AdobeSans_20ULig1XCond-Bold/AdobeSans 
  5824. %    direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
  5825. % for blended fonts w/ special encoding :
  5826. % [ ... number value stream ... /_AdobeSans_20ULig1XCond/AdobeSans 
  5827. %    direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
  5828. /TZ        
  5829. {
  5830.     % set weight vector (if present)
  5831.     dup type /arraytype eq {/_wv exch def} {/_wv 0 def} ifelse 
  5832.     % platform dependent coding flag
  5833.     /_useNativeEncoding exch def
  5834.     % pop fontScript & direction
  5835.     pop pop
  5836.     
  5837.     % create a new dictionary with length
  5838.     % equal to original dictionary length + 2
  5839.     % copy all the key/value pairs except FID
  5840.     % call makeblended font with the weight values if _wv is an array
  5841.     findfont _wv type /arraytype eq {_wv makeblendedfont} if dup length 2 add dict
  5842.     
  5843.     begin
  5844.     
  5845.         % copy all the values but the FID
  5846.         % into the new dictionary
  5847.         mark exch
  5848.         {
  5849.             1 index /FID ne { def } if cleartomark mark
  5850.         }
  5851.         forall
  5852.         % discard last mark
  5853.         pop
  5854.         
  5855.         % define FontName
  5856.         /FontName exch def
  5857.         
  5858.         % if no re-encoding stream is present
  5859.         % then if the base encoding vector of the font
  5860.         % is the same as StandardEncoding
  5861.         % and the use platform encoding flag is true
  5862.         % then install AI platform encoding
  5863.         % else leave the base encoding in effect
  5864.         counttomark 0 eq
  5865.         {
  5866.             1 _useNativeEncoding eq
  5867.             {
  5868.                 /Encoding _nativeEncoding def
  5869.             }
  5870.             if
  5871.             % clean up
  5872.             cleartomark
  5873.         }
  5874.         {    
  5875.             % custom encoding to be done
  5876.             % start off with a copy of the font's standard encoding
  5877.             /Encoding load 256 array copy 
  5878.             modifyEncoding /Encoding exch def
  5879.         }
  5880.         ifelse        
  5881.         FontName currentdict
  5882.     end
  5883.     
  5884.     % register the new font
  5885.     definefont pop
  5886. }
  5887. def
  5888. % text painting operators
  5889. /tr                    % string tr ax ay string 
  5890. {
  5891. _ax _ay 3 2 roll
  5892. } def
  5893. /trj                % string trj cx cy fillchar ax ay string 
  5894. {
  5895. _cx _cy _sp _ax _ay 6 5 roll
  5896. } def
  5897. /a0
  5898. {
  5899. /Tx    % text                            % textString Tx -
  5900.     {
  5901.     dup 
  5902.     currentpoint 3 2 roll
  5903.     tr _psf
  5904.     newpath moveto
  5905.     tr _ctm _pss
  5906.     } ddef
  5907. /Tj    % justified text                % textString Tj -
  5908.     {
  5909.     dup
  5910.     currentpoint 3 2 roll
  5911.     trj _pjsf
  5912.     newpath moveto
  5913.     trj _ctm _pjss
  5914.     } ddef
  5915.     
  5916. } def
  5917. /a1
  5918. {
  5919. /Tx    % text                            % textString Tx -
  5920.     {
  5921.     dup currentpoint 4 2 roll gsave
  5922.     dup currentpoint 3 2 roll
  5923.     tr _psf
  5924.     newpath movet°¿ o
  5925.     tr _ctm _pss
  5926.     grestore 3 1 roll moveto tr sp
  5927.     } ddef
  5928. /Tj    % justified text                % textString Tj -
  5929.     {
  5930.     dup currentpoint 4 2 roll gsave
  5931.     dup currentpoint 3 2 roll
  5932.     trj _pjsf
  5933.     newpath moveto
  5934.     trj _ctm _pjss
  5935.     grestore 3 1 roll moveto tr sp
  5936.     } ddef
  5937.     
  5938. } def
  5939. /e0
  5940. {
  5941. /Tx    % text                            % textString Tx -
  5942.     {
  5943.     tr _psf
  5944.     } ddef
  5945. /Tj    % justified text                % textString Tj -
  5946.     {
  5947.     trj _pjsf
  5948.     } ddef
  5949. } def
  5950. /e1
  5951. {
  5952. /Tx    % text                            % textString Tx -
  5953.     {
  5954.     dup currentpoint 4 2 roll gsave 
  5955.     tr _psf  
  5956.     grestore 3 1 roll moveto tr sp 
  5957.     } ddef
  5958. /Tj    % justified text                % textString Tj -
  5959.     {
  5960.     dup currentpoint 4 2 roll gsave 
  5961.     trj _pjsf
  5962.     grestore 3 1 roll moveto tr sp 
  5963.     } ddef
  5964. } def
  5965. /i0
  5966. {
  5967. /Tx    % text                            % textString Tx -
  5968.     {
  5969.     tr sp
  5970.     } ddef
  5971. /Tj    % justified text                % textString Tj -
  5972.     {
  5973.     trj jsp
  5974.     } ddef
  5975. } def
  5976. /i1
  5977. {
  5978. W N
  5979. } def
  5980. /o0
  5981. {
  5982. /Tx    % text                            % textString Tx -
  5983.     {
  5984.     tr sw rmoveto
  5985.     } ddef
  5986. /Tj    % justified text                % textString Tj -
  5987.     {
  5988.     trj swj rmoveto
  5989.     } ddef
  5990. } def
  5991. /r0
  5992. {
  5993. /Tx    % text                            % textString Tx -
  5994.     {
  5995.     tr _ctm _pss
  5996.     } ddef
  5997. /Tj    % justified text                % textString Tj -
  5998.     {
  5999.     trj _ctm _pjss
  6000.     } ddef
  6001. } def
  6002. /r1
  6003. {
  6004. /Tx    % text                            % textString Tx -
  6005.     {
  6006.     dup currentpoint 4 2 roll currentpoint gsave newpath moveto
  6007.     tr _ctm _pss 
  6008.     grestore 3 1 roll moveto tr sp 
  6009.     } ddef
  6010. /Tj    % justified text                % textString Tj -
  6011.     {
  6012.     dup currentpoint 4 2 roll currentpoint gsave newpath moveto
  6013.     trj _ctm _pjss
  6014.     grestore 3 1 roll moveto tr sp 
  6015.     } ddef
  6016. } def
  6017. % font operators
  6018. % Binding
  6019. /To    % begin text                     % bindType To -
  6020. {
  6021.     pop _ctm currentmatrix pop
  6022. } def
  6023. /TO    % end text                    % TO -
  6024. {
  6025.     Te _ctm setmatrix newpath
  6026. } def
  6027. % Text paths
  6028. /Tp    % begin text path                % a b c d tx ty startPt Tp -
  6029. {
  6030.     pop _tm astore pop _ctm setmatrix 
  6031.     _tDict begin /W {} def /h {} def
  6032. } def
  6033. /TP    % end text path                    % TP -
  6034. {
  6035.     end
  6036.     iTm 0 0 moveto
  6037. } def
  6038. % Render mode & matrix operators
  6039. /Tr    % begin render                    % render Tr - 
  6040. {
  6041.     _render 3 le {currentpoint newpath moveto} if
  6042.     dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse
  6043.     dup /_render exch ddef
  6044.     _renderStart exch get load exec
  6045. } def
  6046. /iTm % internal set text matrix        % - iTm -    (uses _tm as implicit argument)
  6047. {
  6048. _ctm setmatrix _tm concat 0 _rise translate _hs 1 scale
  6049. } def
  6050. /Tm % set text matrix                % a b c d tx ty Tm -
  6051. {
  6052. _tm astore pop iTm 0 0 moveto
  6053. } def
  6054. /Td % translate text matrix         % tx ty Td -
  6055. {
  6056. _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto
  6057. } def
  6058. /Te    % end render                    % - Te -
  6059. {
  6060.     _render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse
  6061.     /_render -1 ddef
  6062. } def
  6063. % Attributes
  6064. /Ta    % set alignment                    % alignment Ta -
  6065. {
  6066. pop
  6067. } def
  6068. /Tf    % set font name and size        % fontname size Tf -
  6069. {
  6070. dup 1000 div /_fScl exch ddef
  6071. exch findfont exch scalefont setfont
  6072. } def
  6073. /Tl    % set leading                    % leading paragraphLeading Tl -
  6074. {
  6075. pop
  6076. 0 exch _leading astore pop
  6077. } def
  6078. /Tt    % set user tracking                % userTracking Tt -
  6079. {
  6080. pop
  6081. } def
  6082. /TW % set word spacing                % minSpace optSpace maxSpace TW -
  6083. {
  6084. 3 npop
  6085. } def
  6086. /Tw    % set computed word spacing        % wordSpace Tw
  6087. {
  6088. /_cx exch ddef
  6089. } def
  6090. /TC % set character spacing            % minSpace optSpace maxSpace TC -
  6091. {
  6092. 3 npop
  6093. } def
  6094. /Tc    % set computed char spacing     % charSpace Tc -
  6095. {
  6096. /_ax exch ddef
  6097. } def
  6098. /Ts % set super/subscripting (rise)    % rise Ts -
  6099. {
  6100. /_rise exch ddef
  6101. currentpoint
  6102. iTm
  6103. moveto
  6104. } def
  6105. /Ti    % set indentation                % firstStartIndent otherStartIndent stopIndent Ti -
  6106. {
  6107. 3 npop
  6108. } def
  6109. /Tz % set horizontal scaling        % scalePercent Tz -
  6110. {
  6111. 100 div /_hs exch ddef
  6112. iTm
  6113. } def
  6114. /TA % set pairwise kerning            % autoKern TA -
  6115.                                     %    autoKern = 0 -> no pair kerning
  6116.                                     %             = 1 -> automatic pair kerning
  6117. {
  6118. pop
  6119. } def
  6120. /Tq % set hanging quotes            % hangingQuotes Tq -
  6121.                                     %    hangingQuotes     = 0 -> no hanging quotes
  6122.                                     %                     = 1 -> hanging quotes
  6123. {
  6124. pop
  6125. } def
  6126. % Text Bodies
  6127. /TX {pop} def
  6128. %/Tx    % non-justified text            % textString Tx -
  6129. %/Tj    % justified text                % textString Tj -
  6130. /Tk    % kern                            % autoKern kernValue Tk -
  6131.                                     %      autoKern = 0 -> manual kern, = 1 -> auto kern
  6132.                                     %    kernValue = kern value in em/1000 space
  6133. {
  6134. exch pop _fScl mul neg 0 rmoveto
  6135. } def
  6136. /TK    % non-printing kern                % autoKern kernValue TK -
  6137. {
  6138. 2 npop
  6139. } def
  6140. /T* % carriage return & line feed    % - T* -
  6141. {
  6142. _leading aload pop neg Td
  6143. } def
  6144. /T*- % carriage return & negative line feed    % - T*- -
  6145. {
  6146. _leading aload pop Td
  6147. } def
  6148. /T-    % print a discretionary hyphen    % - T- -
  6149. {
  6150. _hyphen Tx
  6151. } def
  6152. /T+    % discretionary hyphen hyphen    % - T+ -
  6153. {} def
  6154. /TR    % reset pattern matrix             % a b c d tx ty TR -
  6155. {
  6156. _ctm currentmatrix pop     
  6157. _tm astore pop 
  6158. iTm 0 0 moveto 
  6159. } def
  6160. /TS    % special chars                    % textString justified TS -
  6161. {
  6162. 0 eq {Tx} {Tj} ifelse
  6163. } def
  6164. currentdict readonly pop end
  6165. setpacking
  6166. %%EndResource
  6167. %%BeginResource: procset Adobe_IllustratorA_AI3 1.0 2
  6168. %%Title: (Adobe Illustrator (R) Version 3.0 Abbreviated Prolog)
  6169. %%Version: 1.0 
  6170. %%CreationDate: (7/22/89) ()
  6171. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  6172. currentpacking true setpacking
  6173. userdict /Adobe_IllustratorA_AI3 61 dict dup begin put
  6174. % initialization
  6175. /initialize                % - initialize -
  6176. {
  6177. % 47 vars, but leave slack of 10 entries for custom Postscript fragments
  6178. userdict /Adobe_IllustratorA_AI3_vars 57 dict dup begin put
  6179. % paint operands
  6180. /_lp /none def
  6181. /_pf {} def
  6182. /_ps {} def
  6183. /_psf {} def
  6184. /_pss {} def
  6185. /_pjsf {} def
  6186. /_pjss {} def
  6187. /_pola 0 def
  6188. /_doClip 0 def
  6189. % paint operators
  6190. /cf    currentflat def    % - cf flatness
  6191. % typography operands
  6192. /_tm matrix def
  6193. /_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def 
  6194. /_renderEnd [null null null null /i1 /i1 /i1 /i1] def
  6195. /_render -1 def
  6196. /_rise 0 def
  6197. /_ax 0 def            % x character spacing    (_ax, _ay, _cx, _cy follows awidthshow naming convention)
  6198. /_ay 0 def            % y character spacing
  6199. /_cx 0 def            % x word spacing
  6200. /_cy 0 def            % y word spacing
  6201. /_leading [0 0] def
  6202. /_ctm matrix def
  6203. /_mtx matrix def
  6204. /_sp 16#020 def
  6205. /_hyphen (-) def
  6206. /_fScl 0 def
  6207. /_cnt 0 def
  6208. /_hs 1 def
  6209. /_nativeEncoding 0 def
  6210. /_useNativeEncoding 0 def
  6211. /_tempEncode 0 def
  6212. /_pntr 0 def
  6213. /_tDict 2 dict def
  6214. % typography operators
  6215. /Tx {} def
  6216. /Tj {} def
  6217. % compound path operators
  6218. /CRender {} def
  6219. % printing
  6220. /_AI3_savepage {} def
  6221. % color operands
  6222. /_gf null def
  6223. /_cf 4 array def
  6224. /_if null def
  6225. /_of false def
  6226. /_fc {} def
  6227. /_gs null def
  6228. /_cs 4 array def
  6229. /_is null def
  6230. /_os false def
  6231. /_sc {} def
  6232. /_i null def
  6233. Adobe_IllustratorA_AI3 begin
  6234. Adobe_IllustratorA_AI3
  6235.     {
  6236.     dup xcheck
  6237.         {
  6238.         bind
  6239.         } if
  6240.     pop pop
  6241.     } forall
  6242. end
  6243. end
  6244. Adobe_IllustratorA_AI3 begin
  6245. Adobe_IllustratorA_AI3_vars begin
  6246. newpath
  6247. } def
  6248. /terminate                % - terminate -
  6249. {
  6250. end
  6251. end
  6252. } def
  6253. % definition operators
  6254. /_                    % - _ null
  6255. null def
  6256. /ddef                % key value ddef -
  6257. {
  6258. Adobe_IllustratorA_AI3_vars 3 1 roll put
  6259. } def
  6260. /xput                % key value literal xput -
  6261. {
  6262. dup load dup length exch maxlength eq
  6263.     {
  6264.     dup dup load dup
  6265.     length 2 mul dict copy def
  6266.     } if
  6267. load begin def end
  6268. } def
  6269. /npop                % integer npop -
  6270. {
  6271.     {
  6272.     pop
  6273.     } repeat
  6274. } def
  6275. % marking operators
  6276. /sw                    % ax ay string sw x y 
  6277. {
  6278. dup length exch stringwidth
  6279. exch 5 -1 roll 3 index 1 sub mul add
  6280. 4 1 roll 3 1 roll 1 sub mul add
  6281. } def
  6282. /swj                % cx cy fillchar ax ay string swj x y
  6283. {
  6284. dup 4 1 roll
  6285. dup length exch stringwidth 
  6286. exch 5 -1 roll 3 index 1 sub mul add
  6287. 4 1 roll 3 1 roll 1 sub mul add 
  6288. 6 2 roll /_cnt 0 ddef
  6289. {1 index eq {/_cnt _cnt 1 add ddef} if} forall pop
  6290. exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop
  6291. } def
  6292. /ss                    % ax ay string matrix ss -
  6293. {
  6294. 4 1 roll
  6295.     {                % matrix ax ay char 0 0 {proc} -
  6296.     2 npop 
  6297.     (0) exch 2 copy 0 exch put pop
  6298.     gsave
  6299.     false charpath currentpoint
  6300.     4 index setmatrix
  6301.     stroke
  6302.     grestore
  6303.     moveto
  6304.     2 copy rmoveto
  6305.     } exch cshow
  6306. 3 npop
  6307. } def
  6308. /jss                % cx cy fillchar ax ay string matrix jss -
  6309. {
  6310. 4 1 roll
  6311.     {                % cx cy fillchar matrix ax ay char 0 0 {proc} -   
  6312.     2 npop 
  6313.     (0) exch 2 copy 0 exch put 
  6314.     gsave
  6315.     _sp eq 
  6316.         {
  6317.         exch 6 index 6 index 6 index 5 -1 roll widthshow  
  6318.         currentpoint
  6319.         }
  6320.         {
  6321.         false charpath currentpoint
  6322.         4 index setmatrix stroke
  6323.         }ifelse
  6324.     grestore
  6325.     moveto
  6326.     2 copy rmoveto
  6327.     } exch cshow
  6328. 6 npop
  6329. } def
  6330. % path operators
  6331. /sp                    % ax ay string sp -
  6332. {
  6333.     {
  6334.     2 npop (0) exch
  6335.     2 copy 0 exch put pop
  6336.     false charpath
  6337.     2 copy rmoveto
  6338.     } exch cshow
  6339. 2 npop
  6340. } def
  6341. /jsp                    % cx cy fillchar ax ay string jsp -
  6342. {
  6343.     {                    % cx cy fillchar ax ay char 0 0 {proc} -
  6344.     2 npop 
  6345.     (0) exch 2 copy 0 exch put 
  6346.     _sp eq 
  6347.         {
  6348.         exch 5 index 5 index 5 index 5 -1 roll widthshow  
  6349. °¿         }
  6350.         {
  6351.         false charpath
  6352.         }ifelse
  6353.     2 copy rmoveto
  6354.     } exch cshow
  6355. 5 npop
  6356. } def
  6357. % path construction operators
  6358. /pl                % x y pl x y
  6359. {
  6360. transform
  6361. 0.25 sub round 0.25 add exch
  6362. 0.25 sub round 0.25 add exch
  6363. itransform
  6364. } def
  6365. /setstrokeadjust where
  6366.     {
  6367.     pop true setstrokeadjust
  6368.     /c                % x1 y1 x2 y2 x3 y3 c -
  6369.     {
  6370.     curveto
  6371.     } def
  6372.     /C
  6373.     /c load def
  6374.     /v                % x2 y2 x3 y3 v -
  6375.     {
  6376.     currentpoint 6 2 roll curveto
  6377.     } def
  6378.     /V
  6379.     /v load def
  6380.     /y                % x1 y1 x2 y2 y -
  6381.     {
  6382.     2 copy curveto
  6383.     } def
  6384.     /Y
  6385.     /y load def
  6386.     /l                % x y l -
  6387.     {
  6388.     lineto
  6389.     } def
  6390.     /L
  6391.     /l load def
  6392.     /m                % x y m -
  6393.     {
  6394.     moveto
  6395.     } def
  6396.     }
  6397.     {%else
  6398.     /c
  6399.     {
  6400.     pl curveto
  6401.     } def
  6402.     /C
  6403.     /c load def
  6404.     /v
  6405.     {
  6406.     currentpoint 6 2 roll pl curveto
  6407.     } def
  6408.     /V
  6409.     /v load def
  6410.     /y
  6411.     {
  6412.     pl 2 copy curveto
  6413.     } def
  6414.     /Y
  6415.     /y load def
  6416.     /l
  6417.     {
  6418.     pl lineto
  6419.     } def
  6420.     /L
  6421.     /l load def
  6422.     /m
  6423.     {
  6424.     pl moveto
  6425.     } def
  6426.     }ifelse
  6427. % graphic state operators
  6428. /d                    % array phase d -
  6429. {
  6430. setdash
  6431. } def
  6432. /cf    {} def            % - cf flatness
  6433. /i                    % flatness i -
  6434. {
  6435. dup 0 eq
  6436.     {
  6437.     pop cf
  6438.     } if
  6439. setflat
  6440. } def
  6441. /j                    % linejoin j -
  6442. {
  6443. setlinejoin
  6444. } def
  6445. /J                    % linecap J -
  6446. {
  6447. setlinecap
  6448. } def
  6449. /M                    % miterlimit M -
  6450. {
  6451. setmiterlimit
  6452. } def
  6453. /w                    % linewidth w -
  6454. {
  6455. setlinewidth
  6456. } def
  6457. % path painting operators
  6458. /H                    % - H -
  6459. {} def
  6460. /h                    % - h -
  6461. {
  6462. closepath
  6463. } def
  6464. /N                    % - N -
  6465. {
  6466. _pola 0 eq 
  6467.     {
  6468.     _doClip 1 eq {clip /_doClip 0 ddef} if 
  6469.     newpath
  6470.     } 
  6471.     {
  6472.     /CRender {N} ddef
  6473.     }ifelse
  6474. } def
  6475. /n                    % - n -
  6476. {N} def
  6477. /F                    % - F -
  6478. {
  6479. _pola 0 eq 
  6480.     {
  6481.     _doClip 1 eq 
  6482.         {
  6483.         gsave _pf grestore clip newpath /_lp /none ddef _fc 
  6484.         /_doClip 0 ddef
  6485.         }
  6486.         {
  6487.         _pf
  6488.         }ifelse
  6489.     } 
  6490.     {
  6491.     /CRender {F} ddef
  6492.     }ifelse
  6493. } def
  6494. /f                    % - f -
  6495. {
  6496. closepath
  6497. F
  6498. } def
  6499. /S                    % - S -
  6500. {
  6501. _pola 0 eq 
  6502.     {
  6503.     _doClip 1 eq 
  6504.         {
  6505.         gsave _ps grestore clip newpath /_lp /none ddef _sc 
  6506.         /_doClip 0 ddef
  6507.         }
  6508.         {
  6509.         _ps
  6510.         }ifelse
  6511.     } 
  6512.     {
  6513.     /CRender {S} ddef
  6514.     }ifelse
  6515. } def
  6516. /s                    % - s -
  6517. {
  6518. closepath
  6519. S
  6520. } def
  6521. /B                    % - B -
  6522. {
  6523. _pola 0 eq 
  6524.     {
  6525.     _doClip 1 eq     % F clears _doClip
  6526.     gsave F grestore 
  6527.         {
  6528.         gsave S grestore clip newpath /_lp /none ddef _sc
  6529.         /_doClip 0 ddef
  6530.         } 
  6531.         {
  6532.         S
  6533.         }ifelse
  6534.     }
  6535.     {
  6536.     /CRender {B} ddef
  6537.     }ifelse
  6538. } def
  6539. /b                    % - b -
  6540. {
  6541. closepath
  6542. B
  6543. } def
  6544. /W                    % - W -
  6545. {
  6546. /_doClip 1 ddef
  6547. } def
  6548. /*                    % - [string] * -
  6549. {
  6550. count 0 ne 
  6551.     {
  6552.     dup type (stringtype) eq {pop} if
  6553.     } if 
  6554. _pola 0 eq {newpath} if
  6555. } def
  6556. % group operators
  6557. /u                    % - u -
  6558. {} def
  6559. /U                    % - U -
  6560. {} def
  6561. /q                    % - q -
  6562. {
  6563. _pola 0 eq {gsave} if
  6564. } def
  6565. /Q                    % - Q -
  6566. {
  6567. _pola 0 eq {grestore} if
  6568. } def
  6569. /*u                    % - *u -
  6570. {
  6571. _pola 1 add /_pola exch ddef
  6572. } def
  6573. /*U                    % - *U -
  6574. {
  6575. _pola 1 sub /_pola exch ddef 
  6576. _pola 0 eq {CRender} if
  6577. } def
  6578. /D                    % polarized D -
  6579. {pop} def
  6580. /*w                    % - *w -
  6581. {} def
  6582. /*W                    % - *W -
  6583. {} def
  6584. % place operators
  6585. /`                    % matrix llx lly urx ury string ` -
  6586. {
  6587. /_i save ddef
  6588. 6 1 roll 4 npop
  6589. concat pop
  6590. userdict begin
  6591. /showpage {} def
  6592. 0 setgray
  6593. 0 setlinecap
  6594. 1 setlinewidth
  6595. 0 setlinejoin
  6596. 10 setmiterlimit
  6597. [] 0 setdash
  6598. newpath
  6599. 0 setgray
  6600. false setoverprint
  6601. } def
  6602. /~                    % - ~ -
  6603. {
  6604. end
  6605. _i restore
  6606. } def
  6607. % color operators
  6608. /O                    % flag O -
  6609. {
  6610. 0 ne
  6611. /_of exch ddef
  6612. /_lp /none ddef
  6613. } def
  6614. /R                    % flag R -
  6615. {
  6616. 0 ne
  6617. /_os exch ddef
  6618. /_lp /none ddef
  6619. } def
  6620. /g                    % gray g -
  6621. {
  6622. /_gf exch ddef
  6623. /_fc
  6624. _lp /fill ne
  6625.     {
  6626.     _of setoverprint
  6627.     _gf setgray
  6628.     /_lp /fill ddef
  6629.     } if
  6630. } ddef
  6631. /_pf
  6632. {
  6633. _fc
  6634. fill
  6635. } ddef
  6636. /_psf
  6637. {
  6638. _fc
  6639. ashow
  6640. } ddef
  6641. /_pjsf
  6642. {
  6643. _fc
  6644. awidthshow
  6645. } ddef
  6646. /_lp /none ddef
  6647. } def
  6648. /G                    % gray G -
  6649. {
  6650. /_gs exch ddef
  6651. /_sc
  6652. {
  6653. _lp /stroke ne
  6654.     {
  6655.     _os setoverprint
  6656.     _gs setgray
  6657.     /_lp /stroke ddef
  6658.     } if
  6659. } ddef
  6660. /_ps
  6661. {
  6662. _sc
  6663. stroke
  6664. } ddef
  6665. /_pss
  6666. {
  6667. _sc
  6668. ss
  6669. } ddef
  6670. /_pjss
  6671. {
  6672. _sc
  6673. jss
  6674. } ddef
  6675. /_lp /none ddef
  6676. } def
  6677. /k                    % cyan magenta yellow black k -
  6678. {
  6679. _cf astore pop
  6680. /_fc
  6681. {
  6682. _lp /fill ne
  6683.     {
  6684.     _of setoverprint
  6685.     _cf aload pop setcmykcolor
  6686.     /_lp /fill ddef
  6687.     } if
  6688. } ddef
  6689. /_pf
  6690. {
  6691. _fc
  6692. fill
  6693. } ddef
  6694. /_psf
  6695. {
  6696. _fc
  6697. ashow
  6698. } ddef
  6699. /_pjsf
  6700. {
  6701. _fc
  6702. awidthshow
  6703. } ddef
  6704. /_lp /none ddef
  6705. } def
  6706. /K                    % cyan magenta yellow black K -
  6707. {
  6708. _cs astore pop
  6709. /_sc
  6710. {
  6711. _lp /stroke ne
  6712.     {
  6713.     _os setoverprint
  6714.     _cs aload pop setcmykcolor
  6715.     /_lp /stroke ddef
  6716.     } if
  6717. } ddef
  6718. /_ps
  6719. {
  6720. _sc
  6721. stroke
  6722. } ddef
  6723. /_pss
  6724. {
  6725. _sc
  6726. ss
  6727. } ddef
  6728. /_pjss
  6729. {
  6730. _sc
  6731. jss
  6732. } ddef
  6733. /_lp /none ddef
  6734. } def
  6735. /x                    % cyan magenta yellow black name gray x -
  6736. {
  6737. /_gf exch ddef
  6738. findcmykcustomcolor
  6739. /_if exch ddef
  6740. /_fc
  6741. _lp /fill ne
  6742.     {
  6743.     _of setoverprint
  6744.     _if _gf 1 exch sub setcustomcolor
  6745.     /_lp /fill ddef
  6746.     } if
  6747. } ddef
  6748. /_pf
  6749. {
  6750. _fc
  6751. fill
  6752. } ddef
  6753. /_psf
  6754. {
  6755. _fc
  6756. ashow
  6757. } ddef
  6758. /_pjsf
  6759. {
  6760. _fc
  6761. awidthshow
  6762. } ddef
  6763. /_lp /none ddef
  6764. } def
  6765. /X                    % cyan magenta yellow black name gray X -
  6766. {
  6767. /_gs exch ddef
  6768. findcmykcustomcolor
  6769. /_is exch ddef
  6770. /_sc
  6771. {
  6772. _lp /stroke ne
  6773.     {
  6774.     _os setoverprint
  6775.     _is _gs 1 exch sub setcustomcolor
  6776.     /_lp /stroke ddef
  6777.     } if
  6778. } ddef
  6779. /_ps
  6780. {
  6781. _sc
  6782. stroke
  6783. } ddef
  6784. /_pss
  6785. {
  6786. _sc
  6787. ss
  6788. } ddef
  6789. /_pjss
  6790. {
  6791. _sc
  6792. jss
  6793. } ddef
  6794. /_lp /none ddef
  6795. } def
  6796. % locked object operator
  6797. /A                    % value A -
  6798. {
  6799. pop
  6800. } def
  6801. currentdict readonly pop end
  6802. setpacking
  6803. % annotate page operator
  6804. /annotatepage
  6805. {
  6806. } def
  6807. %%EndResource
  6808. %%EndProlog
  6809. %%BeginSetup
  6810. %%IncludeFont: Helvetica
  6811. Adobe_cmykcolor /initialize get exec
  6812. Adobe_cshow /initialize get exec
  6813. Adobe_customcolor /initialize get exec
  6814. Adobe_typography_AI3 /initialize get exec
  6815. Adobe_IllustratorA_AI3 /initialize get exec
  6816. [
  6817. 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis
  6818. /Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute
  6819. /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde
  6820. /oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex
  6821. /udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
  6822. /registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
  6823. /.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
  6824. /.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
  6825. /questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef
  6826. /guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe
  6827. /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide
  6828. /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright
  6829. /fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
  6830. /Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex
  6831. /Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex
  6832. /Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla
  6833. /hungarumlaut/ogonek/caron
  6834. TE
  6835. %AI3_BeginEncoding: _Helvetica Helvetica
  6836. [/_Helvetica/Helvetica 0 0 1 TZ
  6837. %AI3_EndEncoding TrueType
  6838. %%EndSetup
  6839. 0 A
  6840. 0 O
  6841. 0 g
  6842. 0 i 0 J 0 j 1 w 4 M []0 d
  6843. %AI3_Note:
  6844. 0 D
  6845. -59.75 341.75 m
  6846. -59.75 431.75 L
  6847. -131.75 431.75 L
  6848. -131.75 341.75 L
  6849. -59.75 341.75 L
  6850. f
  6851. u
  6852. 66.25 341.75 m
  6853. 66.25 431.75 L
  6854. -5.75 431.75 L
  6855. -5.75 341.75 L
  6856. 66.25 341.75 L
  6857. f
  6858. U
  6859. u
  6860. 192.25 341.75 m
  6861. 192.25 431.75 L
  6862. 120.25 431.75 L
  6863. 120.25 341.75 L
  6864. 192.25 341.75 L
  6865. f
  6866. U
  6867. 0 0.1 0 0 k
  6868. 1 R
  6869. 0 G
  6870. 0.75 w
  6871. -62 344 m
  6872. -62 434 L
  6873. -134 434 L
  6874. -134 344 L
  6875. -62 344 L
  6876. b
  6877. u
  6878. 64 344 m
  6879. 64 434 L
  6880. -8 434 L
  6881. -8 344 L
  6882. 64 344 L
  6883. b
  6884. U
  6885. u
  6886. 190 344 m
  6887. 190 434 L
  6888. 118 434 L
  6889. 118 344 L
  6890. 190 344 L
  6891. b
  6892. U
  6893. u
  6894. 1 g
  6895. 1 w
  6896. 144.8749 391.0595 m
  6897. 147.8747 391.0984 163.2126 391.0595 y
  6898. 165.6689 391.3782 165.6689 388.1532 v
  6899. 165.6689 384.9282 165.6689 381.1969 y
  6900. 166.7282 382.2563 l
  6901. 167.8626 383.7469 167.7126 380.8969 v
  6902. 167.7126 372.7968 l
  6903. 167.5626 371.5218 166.6626 372.4968 v
  6904. 165.6876 373.3968 l
  6905. 165.6876 366.8717 l
  6906. 165.8376 364.0217 163.2876 364.0217 v
  6907. 160.7376 364.0217 144.9124 364.0217 y
  6908. 142.4374 363.2717 142.4374 366.7967 v
  6909. 142.4374 370.9218 142.4374 371.9718 y
  6910. 143.3374 371.4468 l
  6911. 144.9124 370.3218 144.8374 372.6468 v
  6912. 144.7528 375.2705 144.8374 382.2469 y
  6913. 144.7624 384.0469 143.5624 383.1469 v
  6914. 142.3624 382.2469 142.4374 382.3219 y
  6915. 142.4374 388.1719 l
  6916. 141.9874 391.022 144.8749 391.0595 v
  6917. b
  6918. U
  6919. u
  6920. 0 To
  6921. 1 0 0 1 154.2686 411.9482 0 Tp
  6922. TP
  6923. -20.6719 0 Td
  6924. 0 Tr
  6925. 1 O
  6926. 0 g
  6927. /_Helvetica 8 Tf
  6928. 0 Ts
  6929. 100 Tz
  6930. 0 Tt
  6931. 0 TA
  6932. 0 0 5 TC
  6933. 100 100 200 TW
  6934. 0 0 0 Ti
  6935. 1 Ta
  6936. 0 Tq
  6937. 9 0 Tl
  6938. 0 Tc
  6939. 0 Tw
  6940. (Component) Tx
  6941. (\r) TX 
  6942. 20.6719 -9 Td
  6943. (\r) TX 
  6944. TO
  6945. U
  6946. u
  6947. 0 O
  6948. 1 g
  6949. 1 R
  6950. 0 G
  6951. 41.9221 386.8595 m
  6952. 41.9611 383.8597 41.9221 368.5218 y
  6953. 42.2409 366.0656 39.0159 366.0656 v
  6954. 35.7908 366.0656 32.0595 366.0656 y
  6955. 33.119 365.0062 l
  6956. 34.6096 363.8718 31.7595 364.0218 v
  6957. 23.6595 364.0218 l
  6958. 22.3844 364.1718 23.3595 365.0718 v
  6959. 24.2595 366.0468 l
  6960. 17.7344 366.0468 l
  6961. 14.8844 365.8968 14.8844 368.4468 v
  6962. 14.8844 370.9968 14.8844 386.822 y
  6963. 14.1344 389.297 17.6594 389.297 v
  6964. 21.7844 389.297 22.8344 389.297 y
  6965. 22.3095 388.397 l
  6966. 21.1844 386.822 23.5095 386.897 v
  6967. 26.1332 386.9816 33.1096 386.897 y
  6968. 34.°¿P9096 386.972 34.0096 388.172 v
  6969. 33.1096 389.372 33.1846 389.297 y
  6970. 39.0346 389.297 l
  6971. 41.8846 389.747 41.9221 386.8595 v
  6972. b
  6973. 1 O
  6974. 0 g
  6975. 21.9626 382.8845 m
  6976. 20.0126 378.9844 l
  6977. 20.0126 374.7844 l
  6978. 22.1126 370.4343 l
  6979. 25.9376 368.1843 l
  6980. 29.6127 367.8843 l
  6981. 32.6127 369.6843 l
  6982. 33.9627 368.3343 l
  6983. 37.4127 368.3343 l
  6984. 37.7127 370.8843 l
  6985. 35.7627 372.9844 l
  6986. 36.8127 375.3844 l
  6987. 36.5877 378.6094 l
  6988. 34.7127 381.5345 l
  6989. 32.1627 383.7845 l
  6990. 29.3127 384.9845 l
  6991. 25.5626 384.9845 l
  6992. 21.9626 382.8845 l
  6993. f
  6994. 0 O
  6995. 1 g
  6996. 26.7626 381.6845 m
  6997. 23.7626 379.7344 l
  6998. 23.2376 376.2844 l
  6999. 24.5126 372.9844 l
  7000. 28.1126 370.9594 l
  7001. 31.8627 372.6844 l
  7002. 33.5877 376.1344 l
  7003. 32.6877 379.8094 l
  7004. 30.0627 381.3844 l
  7005. 26.7626 381.6845 l
  7006. f
  7007. 1 O
  7008. 0 g
  7009. 26.4626 376.5844 m
  7010. 26.6126 374.0344 29.4627 375.5344 v
  7011. 34.5627 380.9345 l
  7012. 35.0877 384.6845 32.5377 383.2595 v
  7013. 32.4627 382.2845 33.5127 381.3844 v
  7014. 32.4627 380.1844 l
  7015. 31.1127 381.2345 l
  7016. 28.1126 378.0844 l
  7017. 29.6127 377.1844 28.5627 376.2844 v
  7018. 28.4126 375.4594 26.4626 376.5844 v
  7019. f
  7020. 0 O
  7021. 1 g
  7022. 32.3127 383.4845 m
  7023. 31.7877 381.6095 31.1127 381.2345 v
  7024. 32.4627 380.1844 l
  7025. 33.5127 381.3844 l
  7026. 32.3127 382.2095 32.5377 383.2595 v
  7027. 32.7627 384.3095 32.3127 383.4845 y
  7028. f
  7029. U
  7030. u
  7031. 0 To
  7032. 1 0 0 1 28.2686 411.9482 0 Tp
  7033. TP
  7034. -20.6719 0 Td
  7035. 0 Tr
  7036. 1 O
  7037. 0 g
  7038. (Component) Tx
  7039. (\r) TX 
  7040. 4.8916 -9 Td
  7041. (Manager) Tx 
  7042. (\r) TX 
  7043. TO
  7044. U
  7045. 0 To
  7046. 1 0 0 1 -99.2314 411.9482 0 Tp
  7047. TP
  7048. -19.5605 0 Td
  7049. 0 Tr
  7050. 8 0 Tl
  7051. (Application) Tx 
  7052. (\r) TX 
  7053. TO
  7054. 0 O
  7055. 1 g
  7056. 1 R
  7057. 0 G
  7058. 2 j
  7059. -99.3125 392.7812 m
  7060. -83.8125 377.2812 l
  7061. -99 362.0937 l
  7062. -115.0625 378.1562 l
  7063. -99.3125 392.7812 l
  7064. b
  7065. -99.6875 376.0312 m
  7066. -98.125 377.7187 l
  7067. -97.125 378.9687 -96 378.8437 v
  7068. -94.875 378.7187 -92.1875 378.7812 y
  7069. -87 373.6562 l
  7070. -86.5625 367.5312 l
  7071. -89.625 369.3437 l
  7072. -93.8125 369.4062 l
  7073. -95.9132 369.6753 -96.875 370.1562 v
  7074. -98.125 370.7812 -99.6875 372.2187 y
  7075. -100.2634 373.1745 -100.5 374.5937 v
  7076. -100.5625 374.9687 -99.4375 375.0312 -98.875 374.4687 c
  7077. -98.5563 374.15 -97.3125 372.4687 y
  7078. -95.75 372.5312 l
  7079. -94.3125 373.7812 l
  7080. -94.8125 374.9062 l
  7081. -96.1875 377.0312 -97.4375 375.6562 v
  7082. -98.3776 374.6221 -99.9375 375.2812 -99.6875 376.0312 c
  7083. b
  7084. 1 O
  7085. 0 g
  7086. 0 j
  7087. -87 374.3437 m
  7088. -84.0625 374.0312 l
  7089. -84.0625 366.2812 l
  7090. -86.3125 366.2812 l
  7091. -88.6875 368.7812 l
  7092. -86.125 366.4062 -87 374.3437 v
  7093. f
  7094. -90.5625 374.4062 m
  7095. -90.5625 373.3437 l
  7096. -97.8125 373.3437 l
  7097. -98.875 374.4687 l
  7098. -90.5625 374.4062 l
  7099. f
  7100. -100.5 374.5937 m
  7101. -103.4375 374.5937 l
  7102. -103.875 373.4062 -103 373.4062 v
  7103. -102.125 373.4062 -100.25 373.4062 y
  7104. -100.5 374.5937 l
  7105. f
  7106. 0 O
  7107. 1 g
  7108. 0 R
  7109. 0 G
  7110. 0.5 w
  7111. -98 389 m
  7112. B
  7113. 0 To
  7114. 1 0 0 1 -134 483.5107 0 Tp
  7115. TP
  7116. 0 Tr
  7117. 0 g
  7118. 1 w
  7119. 0 Ta
  7120. 9 0 Tl
  7121. (Application uses ) Tx
  7122. (\r) TX 
  7123. T*
  7124. (Component Manager) Tx
  7125. (\r) TX 
  7126. T*
  7127. (to get component) Tx
  7128. (\r) TX 
  7129. T*
  7130. (connection and call) Tx
  7131. (\r) TX 
  7132. T*
  7133. (component function.) Tx 
  7134. (\r) TX 
  7135. TO
  7136. 0 To
  7137. 1 0 0 1 -7.9521 492.2607 0 Tp
  7138. TP
  7139. 0 Tr
  7140. (Component Manager ) Tx
  7141. (\r) TX 
  7142. T*
  7143. (sends application\325s ) Tx
  7144. (\r) TX 
  7145. T*
  7146. (request for component ) Tx
  7147. (\r) TX 
  7148. T*
  7149. (function to proper ) Tx
  7150. (\r) TX 
  7151. T*
  7152. (component for ) Tx
  7153. (\r) TX 
  7154. T*
  7155. (execution.) Tx 
  7156. (\r) TX 
  7157. TO
  7158. 0 To
  7159. 1 0 0 1 117.9561 465.4482 0 Tp
  7160. TP
  7161. 0 Tr
  7162. (Component executes ) Tx
  7163. (\r) TX 
  7164. T*
  7165. (function call and ) Tx
  7166. (\r) TX 
  7167. T*
  7168. (returns result.) Tx 
  7169. (\r) TX 
  7170. TO
  7171. u
  7172. u
  7173. 0 R
  7174. 0 G
  7175. 0.5 w
  7176. -53.5389 389.0076 m
  7177. -14.2359 389.0076 l
  7178. S
  7179. 0 O
  7180. 0 g
  7181. 1 w
  7182. -51.7889 386.3334 m
  7183. -57.564 388.9146 l
  7184. -51.7889 391.5396 l
  7185. -53.5389 388.9584 l
  7186. -51.7889 386.3334 l
  7187. f
  7188. U
  7189. -15.8875 391.6031 m
  7190. -10.1124 389.0219 l
  7191. -15.8875 386.3969 l
  7192. -14.1375 388.9781 l
  7193. -15.8875 391.6031 l
  7194. f
  7195. U
  7196. u
  7197. u
  7198. 0 R
  7199. 0 G
  7200. 0.5 w
  7201. 72.2993 388.9769 m
  7202. 111.6023 388.9769 l
  7203. S
  7204. 0 O
  7205. 0 g
  7206. 1 w
  7207. 74.0493 386.3027 m
  7208. 68.2742 388.8839 l
  7209. 74.0493 391.5089 l
  7210. 72.2993 388.9277 l
  7211. 74.0493 386.3027 l
  7212. f
  7213. U
  7214. 109.9507 391.5724 m
  7215. 115.7258 388.9911 l
  7216. 109.9507 386.3661 l
  7217. 111.7007 388.9474 l
  7218. 109.9507 391.5724 l
  7219. f
  7220. U
  7221. %%PageTrailer
  7222. gsave annotatepage grestore showpage
  7223. %%Trailer
  7224. Adobe_IllustratorA_AI3 /terminate get exec
  7225. Adobe_typography_AI3 /terminate get exec
  7226. Adobe_customcolor /terminate get exec
  7227. Adobe_cshow /terminate get exec
  7228. Adobe_cmykcolor /terminate get exec
  7229. Adobe_packedarray /terminate get exec
  7230. %%EOF
  7231. ®◊#ˇ ˇˇˇˇ#◊ 
  7232. d, Palatino
  7233. .°dONLNdñ$    +¥@PComponent Manager maps to the component functions. Let’s take a look at both the°dONLNdQ$ñ0¶* ;component functions and the component dispatcher in detail.,     Helvetica
  7234.     °dONLNdçAñL*COMPONENT FUNCTIONS
  7235. °dONLNd°LñX* PThere are two groups of functions that are implemented in a component. One group°dONLNdÚXñd* Rdoes the custom work that’s unique to the component. The nature of these functions°dONLNdEdñp* Qdepends on the capabilities that the component is intended to provide to clients.°dONLNdópñ| * NFor example, the movie controller component, which plays QuickTime movies, has°dONLNdÊ|ñà * Va number of functions in this category that control the position, playback rate, size,°dONLNd=àñî
  7236. * Qand other movie characteristics. Each function defined in your component API must°dONLNdèîñ†
  7237. * Shave a corresponding request code, and you must assign these request codes positive°dONLNd„†ñ¨Ù* values (0 or greater).°dONLNd˙∏ñƒfi*IThe second group of functions comprises the standard calls defined by the°dONLNdDƒñ–* QComponent Manager for use by a component. Currently, four of these standard calls°dONLNdñ–ñ‹´* must°dONLNdö–´‹)N be implemented by every component: open, close, can do, and version. Two more°dONLNdÈ‹ñË (¥Vrequest codes, register and target, are defined, but supporting these is optional. The°dONLNd@ËñÙ›* Istandard calls are represented by negative request codes and are defined °dONLNdâË›ÙÒ(˚only°dONLNdçËÒÙ˛) by°dONLNdëÙñ∂(¥Apple.°dONLNdô ñÇ*6Here’s a quick look at each of the six standard calls.
  7238.     °dONLNd–%ñ0Û*The open function.°dONLNd‚%Û0ˆ)] 
  7239. °dONLNd„$ˆ0Ì)6The open function gives a component the opportunity to°dONLNd0ñ<(X¥Tinitialize itself before handling client requests, and in particular to allocate any°dONLNdo<ñHÈ* Lprivate storage it may need. Private storage is useful if your component has°dONLNdºHñT* Phardware-dependent settings, local environment settings, cached data structures,°dONLNd
  7240. Tñ`Ê* JIDs of component instances that may provide services to your component, or°dONLNdX`ñld* ,anything else you might want to keep around.
  7241.     °dONLNdÜyñш*The close function.°dONLNdôyˆÑ˘)` 
  7242. °dONLNdöx˘ÑÙ)8The close function provides for an orderly shutdown of a°dONLNd”Ññê(¨¥Rcomponent. For simple components, closing mainly involves disposing of the private°dONLNd&êñúÏ* Lstorage created in the open function. For more complex components, it may be°dONLNdsúñ®¥* ?necessary to close supporting components and to reset hardware.
  7243.     °dONLNd¥µñ¿¸*The can do function.°dONLNd»µ¸¿ˇ)f 
  7244. °dONLNd…¥ˇ¿);The can do function tells an application which functions in°dONLNd¿ñÃ(Ë¥Sthe component’s API are supported. Clients that need to query a component about its°dONLNdYÃñÿÏ* Icapabilities can use the ComponentFunctionImplemented routine to send the°dONLNd£ÿñ‰* component a can do request.
  7245.     °dONLNd¿Òñ¸*The version function.°dONLNd’Ò¸)j 
  7246. °dONLNd÷¸Ù)5The version function provides two important pieces of°dONLNd     ¸ñ($¥Ninformation: the component specification level and the implementation level. A°dONLNd    [ñ
  7247. * Tchange in the specification level normally indicates a change in the basic API for a°dONLNd    ∞ñ ˆ* Lparticular component class, while implementation-level changes indicate, for°dONLNd    ˝ ñ,p* 1example, a bug fix or the use of a new algorithm. xBx/,Times
  7248. ({& 
  7249. +
  7250. 12
  7251. 4ìq·3
  7252. +md)e)v)e)l)o)p)  
  7253. )
  7254. December 1992ˇÑ◊#ˇ ˇˇˇˇ#◊ 
  7255. d,     Helvetica
  7256.     .°dONLNd%0Ñ+6LThe register function.°dONLNd%Ñ0á)l , Palatino
  7257. °dONLNd$á0y)5The register function allows a component to determine°dONLNdM0<w(X6Mwhether it can function properly with the current system configuration. Video°dONLNdõ<HÖ* Sdigitizer components, for example, typically use register requests to check for the°dONLNdÔHTÜ* Qpresence of their corresponding digitizing hardware before accepting registration°dONLNdAT`â* Pwith the Component Manager. A component receives a register request code only if°dONLNdí`lv* Nit explicitly asks for it. We’ll see how this is done when we walk through our°dONLNd·lxm* sample component.
  7258.     °dONLNdÙÖê{*The target function.°dONLNdÖ{ê~)c 
  7259. °dONLNd    Ñ~êr)6The target function informs your component it has been°dONLNd@êú@(∏6captured°dONLNdHê@úä)(I by another component. Capturing a component is similar to subclassing an°dONLNdíú®Å(ƒ6Pobject, in that the captured component is superseded by the capturing component.°dONLNd„®¥Ñ* NThe captured component is replaced by the capturing component in the component°dONLNd2¥¿~* Tregistration list and is no longer available to clients. We’ll discuss the notion of°dONLNdá¿Ã÷* *capturing components in more detail later.
  7260.     °dONLNd≥›˵*THE COMPONENT DISPATCHER
  7261. °dONLNdÕËÙå* RAll components must have a main entry point consisting of a dispatcher that routes°dONLNd Ù~* Lthe requests the client application sends via the Component Manager. When an°dONLNdm j* Happlication calls a component function, the Component Manager passes two°dONLNd∂ é* Nparameters to the component dispatcher — a ComponentParameters structure and a°dONLNd$è* Shandle to any private storage that was set up in the component’s open function. The°dONLNdY$0Ó* .ComponentParameters structure looks like this:,
  7262. Courier
  7263.     °dONLNdà=Hh*typedef struct {°dONLNdöI&Tl+ unsigned char °dONLNd©I}Tõ)Wflags;°dONLNd≤U&`l(|Dunsigned char °dONLNd¡U}`Ø)W
  7264. paramSize;°dONLNd–a&lD(àDshort °dONLNd⁄a}lñ)Wwhat;°dONLNdÁm&x?(îDlong °dONLNdm}x)Wparams[kSmallestArray];°dONLNd
  7265. yÑÜ(†6} ComponentParameters;
  7266. °dONLNd!êúÄ*OThe first two fields are used internally by the Component Manager and aren’t of°dONLNdqú®Ö* Qmuch interest here. The what field contains the request code corresponding to the°dONLNd√®¥Ä* Ncomponent function call made by the application. The params field contains the°dONLNd¥¿¿* #parameters that accompany the call.°dONLNd6Ãÿ]*GFigure 3 shows a detailed view of how a component function call from an°dONLNd~ÿ‰ê* Qapplication is processed. The component dispatcher examines the what field of the°dONLNd–‰x* LComponentParameters record to determine the request code, and then transfers°dONLNd¸Ë* .control to the appropriate component function.
  7267.     °dONLNdL
  7268. Æ*REGISTERING A COMPONENT
  7269. °dONLNdd$* PBefore a component can be used by an application, it must be registered with the°dONLNdµ$0á* HComponent Manager. This way the Component Manager knows which components°dONLNd˛0<Q* Eare available when it’s asked to open a particular type of component. x4x&,Times
  7270. ({) 
  7271. +
  7272. 13
  7273. 4ìÚ·Ø
  7274. (Ú*1TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  7275. )”
  7276. December 1992ˇj◊#ˇ ˇˇˇˇ#◊ 
  7277. 6qô,"6q°d
  7278. ONLNfH"ô,°d
  7279. ONLNfÅP†Ç†é
  7280. 45p6qò8@ª@ª6qv,………    ›ˇ    ›    ›    ›    ›    ›    ›    ›    ›    ›    ››IJˆ›Y˜çÈ›%T¶ìDˆ›%T¶üDˆ›eT¶ëDˆ›ôWçDˆ ›Û ›Û    ›    ›    ›    ›    ›
  7281. ›ˇˇÙ,ˆÄ¿@˝˝Δ¸@?ˇˇÄ‰ 0˜y‘Õ÷ôP˝!õÁ3ôÿ«ú«f#9»?ˇˇÄúÕ∏ÿv39ê0˜e5&“¢M`˝!&§ •HΔ‘iîD™Pˇˇ¿fi0ôL `0˜Â5“¢5P˝!&§ ΩH´U©Ù'™Hˇˇ¿ì¶)üDÀ–0˜%52“¢eH˝!¶§ °H™U)Ñ*Dˇˇ¿S&iòL 0˜9‘ŒÃ°ùP˝!ß2ôHì‘Ád#)»ˇˇ¿‰ú®–v39êˆ!ı¸¸ˇˇ¿˝˙ˆ!ı¸¸ˇˇ¿˝˙›oˇˇ‡ı$ÚÄÄ˚¸ˇˇ˚@Ä1˜-7Œ73±◊õÄ Œ¶L39É6ÿúŒw顡òÙƒΔc∞n81˜-ÕIMJê’%¶Ä    2©ÑL DÕ*ñíˇˇ%5(Iî»:H1˜-MIMzê’!¶Ä    ÚØDDÀƒLºì*ñíˇˇ=5‰Hî¯⁄H1˜-ÕIMBê’%¶Ä    ®$L ÆS*ñíˇˇ!5Iî¿öH1˜-5N52êıöêŒÊD39É4òú v顡¸ƒFc∞z8ı˜˙
  7282. ˇˇ˝ ˙ı˜˙
  7283.  ˇˇ˝ ˙›ˇˇı"ÎÄ ¸Ä˛ˇˇ˝†˛%Î
  7284.  
  7285. ɱ-é3>„qπIJˇˇ¿˛
  7286. îùõúŸÄ)Û˙
  7287. D *RL™î“hIJˇˇ¿&∞S&Tj@)Û˙
  7288. D˘+“D™î”ËIJˇˇ¿®6S&U´¿)Û˙
  7289. D¿™L™î“(IJˇˇ¿2§&S&U*)Û˙
  7290. ɱ)é3*„Q®Ä˛ˇˇ¿˛
  7291. Œ®ùîÈÄÛÛÄ˚ˇˇ¿¸˝ÛÛÄ˚?ˇˇ¿¸˝ÛÏ?ˇˇÄı Û˙ ` `ı P$Û˙ú‹Œ78V¯uΔʇ˘
  7292. Ã˘ÕΔÊtÊ÷p%Û˙ï-*
  7293. MHVh5Ii†˙ 2©3I¢4©YP%Û˙ï
  7294. *5MHVh5Hi†˙ ©3O¢4®YP%Û˙ï-*%MHVh5Ii†˙ 2©3H¢4©YP$Û˙îà58*h=Ff†˘
  7295. éÕF¢<¶VPÛÙ˙¯˙ÛÙ0˙¯˙
  7296. ÛÏò8@Ī@Īvq∂,ۈį˘¿˛˛Û˙foç≥@˘˘
  7297. ≠Êl¯€4Û˙    4:í Ä˘˘
  7298. ¨–ìF©,®Û˙    ‘⁄û˙@˘˘
  7299. ¨–ùZ©Ô§Û˙    îöꬠ˘˘
  7300. ¨–ôR© "Û˙tzå≤H˘˘
  7301. T–ÁN®À$ÄÛ˙˙¸˜Ä˚Û˙˙¸˜Ä˚ÛÚ¸Ù˛ÛÚ¸Ù˛ÛÚ¸Ù˛ÛÚ¸Ù˛ÛÚ¸Ù˛ÛÚ¸Ù˛ÛÚ¸Ù˛ÛÚ¸Ù˛ÛÚ¸Ù˛ÛÚ¸Ù˛ÛÚ¸Ù˛ÛÚ¸˛˘ˇ¸˛'?˘ˇ‡˝˛?˘ˇ‡¸˛˘ˇ¸˛'?˘ˇ‡˝˛?˘ˇ‡¸˛˘ˇ¸˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛&?˘ˇ¯˝˛?˘ˇ¯¸˛¯ˇ˛?˘ˇ¯˘?˘ˇ¯˘˛¯ˇ˛!?˘ˇ¯˚?˘ˇ¯˘¯ˇ˛!?˘ˇ¯˚‡?˘ˇ¯˘¯ˇ˛ ?˘ˇ¯˙¯?˘ˇ¯˘á¯ˇ˛?˘ˇ¯˙ˇ¸?˘ˇ¯ˆˇ«¯ˇ˛ ?˘ˇ¯˙¯?˘ˇ¯˘á¯ˇ˛!?˘ˇ¯˚‡?˘ˇ¯˘¯ˇ˛!?˘ˇ¯˚?˘ˇ¯˘¯ˇ˛?˘ˇ¯˘?˘ˇ¯˘˛¯ˇ˛!?˘ˇ¯˙?˘ˇ¯˙˛¯ˇ˛?˘ˇ¯˙?˘ˇ¯˙˛¯ˇ˝?˘ˇ¯>˙?˘ˇ¯|˙˛¯ˇ˝?˘ˇ¯˚ˇ¸?˘ˇ¯ıˇá¯ˇ˝!?˘ˇ¯>˙?˘ˇ¯|˙˛¯ˇ˛ò8ÄÆªÄƪ∂q‰,!?˘ˇ¯˙?˘ˇ¯˙˛¯ˇ!?˘ˇ¯˙?˘ˇ¯˙˛¯ˇÄ?˘ˇ¯˘?˘ˇ¯˘˛¯ˇÄ?˘ˇ¯˘?˘ˇ¯˘˛¯ˇ¿%?˘ˇ¯˛˝?˘ˇ¯˚‡˛¯ˇ@'?˘ˇ¯˛IJ?˘ˇ¯¸Ä˛¯ˇ@&?˘ˇ¯˝¿˛?˘ˇ¯¸˛¯ˇ@&?˘ˇ¯˝`˛?˘ˇ¯¸˛¯ˇ@&?˘ˇ¯˝ ˛?˘ˇ¯¸˛¯ˇ@&?˘ˇ¯˝0˛?˘ˇ¯¸0˛¯ˇ@&?˘ˇ¯˝˛?˘ˇ¯¸`˛¯ˇ@'?˘ˇ¯˝ ˛?˘ˇ¯˝¿˛¯ˇ@'?˘ˇ¯˝˛?˘ˇ¯˝˛˛¯ˇ@'?˘ˇ¯˝˛?˘ˇ¯˝˛˛¯ˇ@'?˘ˇ¯˝˛?˘ˇ¯˝ ˛˛¯ˇ@'?˘ˇ¯˝Ä?˘ˇ¯˝8˛˛¯ˇ@&?˘ˇ¯¸¿?˘ˇ¯˝`˛˛¯ˇ@&?˘ˇ¯¸@?˘ˇ¯˝¿˛˛¯ˇ@'?˘ˇ¯¸`?˘ˇ¯˛IJ˛¯ˇ@&?˘ˇ¯¸0?˘ˇ¯˛˝˛¯ˇ@&?˘ˇ¯¸?˘ˇ¯˛ ˝˛¯ˇ@&?˘ˇ¯¸?˘ˇ¯˛˝˛¯ˇ@&?˘ˇ¯¸ ?˘ˇ¯˛p˝˛¯ˇ@&?˘ˇ¯¸?˘ˇ¯˛¿˝˛¯ˇ@&?˘ˇ¯¸?˘ˇ¯Ä˝˛¯ˇ@%?˘ˇ¯¸Ä?˘ˇ¯¸˛¯ˇ@$?˘ˇ¯˚Ä?˘ˇ¯¸˛¯ˇ@$?˘ˇ¯˚¿?˘ˇ¯¸˛¯ˇ@$?˘ˇ¯˚`?˘ˇ¯0¸˛¯ˇ@$?˘ˇ¯˚0?˘ˇ¯‡¸˛¯ˇ@$?˘ˇ¯˚?˘ˇ¯ĸ˛¯ˇ@#?˘ˇ¯˚?˘ˇ¯˚˛¯ˇ@#?˘ˇ¯˚ ?˘ˇ¯˚˛¯ˇ@#?˘ˇ¯˚?˘ˇ¯˚˛¯ˇ@#˘ˇ¯˚˘ˇ¯0˚˛¯ˇ@#˘ˇ¯˚˘ˇ¯`˚˛¯ˇ@ÒĈ¿˚Ú@¿˜Ä˚˘0˚@`˜˙˘0˚@ ˜ ˙˘p˚@0˜8˙˘x˚@˜`˙˘x˚@ ˜¿˙˘¸˚@¯Ä˙˘Ï˚@¯˘˘ ˚@¯ ˘˘ ˚@òź@ªHH‡®|çIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  7302. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  7303. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  7304.  
  7305.  
  7306.  ˛êêê@ª6qv,'ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ ÅÅfiŎˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇ˜˛ˇ›˛§ˇ˘6ÅÅfiˇ¯ˇ˛ˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇ§ˇ˘9ÅÅfiˇ¯ˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ§ˇ˘9ÅÅfiˇ¯ˇ˝ˇˇ˛ˇ˛ˇˇˇˇˇˇ˛˛ˇ˛ˇ˛ˇ§ˇ˘:ÅÅfiˇ¯ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇ§ˇ˘7ÅÅfiˇ˜˛ˇ ˇˇˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇˇˇˇ˛ˇ§ˇ˘ÅÅfiˇË˛åˇ˘ÅÅfiˇËˇåˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÒÌˇñˇ˘V©ˇ˜ˇˇ˜ˇˇÏˇˇ÷˛ˇ›ˇ˛ˇˇ˛ˇˇ◊ˇˇÛ˛ˇÔˇˇ„˝ˇˇÚˇ˝ˇÒˇÒˇÛˇ˘Û™ ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇ˛ˇˇˇˇ˛ˇ˝ ˛ˇ˛ˇ˛ˇ˛Ÿˇ˛ˇ˛ˇˇ˛˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ ˇˇ˛ˇ˛ˇˇˇˇ˛    ˇˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇÛˇÛˇÏˇ„˛˛˛ˇˇ˛ˇˇˇˇˇˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇ˝ˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛˙ˇ˘Ú™#ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ ˇˇˇˇˇˇˇÿˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ ˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇÚˇÙˇˇÏˇˇ‰ˇ˛ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇˇ˘ˇ˘Ê´¸ˇ ˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇ˛    ˇˇˇˇˇˇŸˇ¸ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇ˝ˇ˝ˇ ˇˇˇˇˇÛˇÙˇÍˇ‰ˇ˛
  7307. ˇˇˇˇ˛ˇˇˇˇ˛ˇˇ¸ˇ˝ˇ¸ˇˇ˛ˇˇˇˇ˝ˇˇ˙ˇ˘Ò´ˇ˛ ˇ˛ˇˇˇ˛ˇˇˇˇˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ⁄ˇ˛ˇˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇ˝ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇˇˇˇˇ˝˛¸ˇ˛˝ˇˇˇ˛˛˛ÙˇÙˇÍˇ‰ˇ˛ˇ˛˛˛ˇˇˇˇ˛ˇ˛ˇˇˇ˛ˇ˝ˇˇˇ˝
  7308. ˛ˇ˛ˇ˛ˇˇ¸ˇ˚ˇ˘Î´ˇ˛˛ˇ˛ˇ    ˇˇˇˇ˛ˇ ˇˇˇˇˇˇ˝ˇˇ˛ˇˇˇˇÿ˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˝ˇˇˇ˛ˇ˛ˇˇˇˇ˝ˇ˛ˇˇˇˇ˛ˇˇÛˇÙˇÍˇ‰˝ˇˇˇ˛ˇ˛ˇ    ˇˇˇˇˇ˛ˇˇˇ¸˛ˇˇˇ˛ˇˇˇˇ˛ˇˇˇˇ˙ˇ˘&ߡ˝ˇúˇ–ˇ÷ˇÙˇÍˇÿˇ¬ˇ˘'ߡ˝˛úˇ“ˇˇ’ˇÙ˝ˇÌˇÿ˛¬ˇ˘ÅÅfiˇÙˇˇˇÌˇˇôˇ˘9ܡ˝ˇÛˇˇ≈ˇÛˇ”ˇˇÏˇÒˇÌ˛ˇÃˇÛˇÓˇÛˇ˘ı´ˇˇˇˇ˛˛ˇ˛ˇ˛ˇ˛ ˇˇ˛ˇˇˇˇ˛ˇˇˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇˇ˛ˇÊˇ˛ˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛˝ˇˇˇˇ˛ˇˇˇ¸ˇˇˇˇ˛ˇˇ˛ˇˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛˛ˇ˛ˇ˛ˇıˇÒˇÎˇÊˇˇˇˇ˛    ˇ˛ˇˇ˛ˇ˛˛˛ˇ˛˛˛ˇ˛ˇ˛˛ˇˇˇ¸˛ˇˇ˛ˇ˛˛ˇÛˇ˘˙¨&ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇˇÊˇˇˇˇˇˇˇˇˇˇ˝ˇ˛ˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇıˇÒˇÎˇÊˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇ¸˛ˇˇˇˇÛˇ˘Ú¨ˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˝
  7309. ˇˇˇˇˇˇ˝    ˇˇˇˇˇˇÊˇ¸ˇˇˇˇ˝ˇˇ˛ˇ˛ˇ˛ˇˇˇˇ˝ˇ˛ˇ˛ˇˇˇˇ˝ˇ ˇˇˇˇˇˇˇˇˇˇˇˇˇˇıˇÒˇÎˇÊˇ˝ˇˇˇˇˇ˝ˇˇ˛ˇˇ˛ˇˇˇ¸ˇ˛ ˇˇˇˇˇˇˇÛˇ˘Ô¨ˇˇˇˇˇ˛ˇˇ˛ˇˇˇ˛ˇ˝ˇˇ˛˝ˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇÊˇ˛˛    ˛ˇˇˇˇ¸ˇˇ˛
  7310. ˇˇˇˇˇˇˇ˚
  7311. ˇˇˇˇˇˇˇ˚ˇ˛ˇ˛ˇˇˇˇ˛ˇˇˇ˛ˇıˇÒˇÎˇÊ˛ˇ˝˛ˇ˛ˇ˛˚ˇˇˇ˛ˇ˛ˇˇˇ˚ ˇ˛ˇˇˇˇÛˇ˘Ó´
  7312. ˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇ˝˝ˇˇˇ˛ˇˇˇˇˇˇˇˇˇÈˇ˛ˇˇ˛ˇ˛ˇˇˇˇ˛ˇ˝ˇˇˇˇ˛ˇˇˇ¸ˇˇˇˇˇˇˇˇ˛ˇ˛ˇ
  7313. ˇˇˇˇ˛ˇˇˇˇ˛˛ˇıˇÒˇÎˇÊˇ˛ˇˇ˛˚ˇˇˇ˛ˇ˛ˇ˛ˇˇˇˇ˛˛ˇˇˇ¸˝ˇˇ˛˛ˇÛˇ˘&ùˇ®ˇ≈ˇÁˇıˇÒˇÎˇ€ˇ¡ˇ˘'ùˇ®ˇ≈ˇÈˇ˛ÙˇÒˇÎˇ€ˇ¡ˇ˘ÅÅfiˇÒˇÌˇˇöˇ˘6ÅÃˇ˜ˇ¯ˇˆˇÿˇflˇÒˇÌ˛ˇ›ˇˇflˇ˚ˇÎˇ˘òÅÕˇˇ˛ˇ¸ˇ˛ˇˇ˛˛    ˛ˇˇˇ˛ˇ˛˛ˇ˛    ˇ˛ˇ˛ˇ˛˛ˇ˛ˇ˛ˇ˛ˇˇ˛˛    ˛ˇˇ˛ˇ˛ˇflˇÙ˝ˇÌˇ„ ˇˇˇˇˇˇˇ˚%˛ˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇÔˇ˘ùé
  7314. ¿ˇˇˇ˛    ˇˇˇˇˇ˛2ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇflˇÙˇÍˇ‰ ˇˇˇˇˇˇˇ˘˛ˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇ˘öé¿ˇˇˇ˛ˇ¸ˇˇˇˇ˝ˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇ˛ˇflˇÙˇÍˇ‰ˇ˛    ˇˇˇˇˇˇ¸#ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇ˘õé
  7315. ¿˛ˇ˛˛˛ˇ˛˚ˇˇˇˇ˝#ˇˇ˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇflˇÙˇÍˇ‰ˇˇˇˇˇˇ˛˝$ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇˇˇˇÌˇ˘îé
  7316. ¿ˇˇˇ¸˛ˇˇˇ˛    ˇˇˇˇˇ˛˛ˇ˛
  7317. ˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇˇˇˇ˛ˇflˇÙˇÍˇ„ˇˇ˛ˇˇˇˇ˚˚ˇ˛ˇˇ˛ˇˇ˛ˇˇˇ˛ˇˇˇˇÔˇ˘'é
  7318. 硫ˇÙˇˇÎˇÕˇ˝ˇ˜ˇ›ˇ˘'é硫ˇÛˇÏˇˇÕˇ˝˛˜ˇ›ˇ˘é
  7319. Å“ˇÛ͡óˇ˘:é¿ˇÛˇˇˇÎˇˇˇ˙ˇÛˇˇÈˇóˇ˛ˇÛˇˇÚˇ˘≤é
  7320. ¡ˇ˛ˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˝ˇˇˇˇˇ˛ˇˇ˛ˇ˝˛ˇ˛ˇˇ˛˛ˇ˝˛ˇˇ˛ˇˇ˛˛
  7321. ˛ˇˇ˛ˇ˛ˇˇ˛ˇÒˇΩ    ˇ˛ˇ˛ˇ˛˛ˇ ˇˇ˛ˇ˛ˇˇ˛˛&˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˙ˇ˘≤é
  7322. ¿ˇˇˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇˇˇˇˇˇˇˇ˝ ˇˇˇˇˇˇˇ¸ˇˇˇˇˇˇˇˇˇˇˇˇˇÒˇæ#ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˙ˇ˘Øé
  7323. ¿
  7324. ˇˇˇˇˇˇ˝
  7325. ˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˝ ˇˇˇˇˇˇˇ¸
  7326. ˇˇˇˇˇˇ˝    ˇˇˇˇˇˇÒˇæˇ˛ˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇ˛ˇ˛
  7327. ˇˇˇˇˇˇ˝
  7328. ˇˇˇˇˇˇ˙ˇ˘¥é¿ˇˇˇ˛ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇ˛ˇˇˇ˛ˇˇ˝ ˇ˛ˇˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇˇÒˇæ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛˙ˇ˘©é
  7329. ¿˝ˇˇˇˇˇˇˇˇˇˇˇ˝˛ˇ ˇˇˇˇˇ˛ˇ¸
  7330. ˇˇˇˇˇˇ¸˝ˇˇˇ˛
  7331. ˇˇˇˇˇˇˇˇÒˇΩˇˇˇˇˇˇˇ˛ˇˇˇˇˇ˛ˇˇˇˇ˛ˇ˛˝ˇˇˇˇˇˇˇˇˇˇˇ˙ˇ˘éëˇ√ˇÆˇΔˇ˘é
  7332. ìˇˇ¬ˇÆˇΔˇ˘é
  7333. Å“ˇÅÚˇ˘òź@ĪHH‡µƒéIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  7334. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  7335. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  7336.  
  7337.  
  7338.  ˛êêê@Īvq∂,'é
  7339. •ˇØˇ∏ˇˇˇflˇ„ˇ˘m類ˇ ˇˇˇˇˇˇ˛ˇ˛ˇ˛
  7340. ˇˇ˛ˇˇ˛ˇ˛ˇ∏ˇΩˇˇˇˇ˛˛ˇ˛˝˛ˇ ˇˇˇˇˇˇ˛ˇ˛ˇ˛
  7341. ˇˇ˛ˇˇ˛ˇ˛ˇÏˇ˘ké
  7342. ¡    ˇˇˇˇˇ˝˛ˇˇˇˇˇˇˇˇˇˇ∑ˇΩ ˇˇˇˇˇˇˇ˝    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇÎˇ˘i顎˛ˇˇˇˇˇˇˇˇˇ˝ˇ¸ˇˇˇ∏ˇΩ ˇˇˇˇˇˇˇ˝ˇ˛ˇˇˇˇˇˇˇˇˇ˝ˇ¸ˇˇˇÏˇ˘mé
  7343. ¡ˇˇˇˇ˛ˇˇˇˇˇˇ˝ˇ˛˝ˇ˛ˇπˇΩ ˇˇˇ˛ˇ˛ˇ˝ˇˇˇˇ˛ˇˇˇˇˇˇ˝ˇ˛˝ˇ˛ˇÌˇ˘pé
  7344. ¡˛ˇ˛ˇˇ˛˝ˇˇˇ˛ˇˇˇˇˇˇˇˇªˇº
  7345. ˇˇˇˇˇˇ˝˛ˇ˛ˇˇ˛ˇˇˇˇ˛ˇˇˇˇˇˇˇˇÔˇ˘é
  7346. ¡ˇ¡‘ˇ≠ˇ«ˇ˘é¡ˇ¡
  7347. ‘ˇ≠ˇ«ˇ˘é
  7348. Å
  7349. ‘ˇé
  7350. Êˇ˘éÅ
  7351. ‘ˇéÊˇ˘é
  7352. Å‘ˇé
  7353. Êˇ˘é
  7354. Å
  7355. ‘ˇé
  7356. Êˇ˘é
  7357. Å‘ˇé
  7358. Êˇ˘éÅ
  7359. ‘ˇéÊˇ˘é
  7360. Å
  7361. ‘ˇé
  7362. Êˇ˘éÅ
  7363. ‘ˇéÊˇ˘é
  7364. Å‘ˇé
  7365. Êˇ˘é
  7366. Å
  7367. ‘ˇé
  7368. Êˇ˘é
  7369. Å‘ˇé
  7370. Êˇ˘éÅ
  7371. ‘ˇ‡∏ˇ¯Êˇ˘k∏ˇŸ
  7372. „∏ˇÁ
  7373. ‘ˇ‡Hˇˇ¯
  7374. Êˇ˘˙JˇˇŸ„HˇˇÁ
  7375. ‘ˇ‡Hˇˇ¯Êˇ˘˝Iˇ˛ˇ€
  7376. „Gˇ˛ˇÈ‘ˇ‡Gˇ˛ˇ˙
  7377. Êˇ˘˝Iˇ˛ˇ€
  7378. „Gˇ˛ˇÈ
  7379. ‘ˇ‡Gˇ˛ˇ˙
  7380. Êˇ˘˝Iˇ˛ˇ€
  7381. „Gˇ˛ˇÈ‘ˇ‡Gˇ˛ˇ˙
  7382. Êˇ˘˝Iˇ˛ˇ€„Gˇ˛ˇÈ
  7383. ‘ˇ‡Gˇ˛ˇ˙Êˇ˘˝Iˇ˛ˇ€
  7384. „Gˇ˛ˇÈ
  7385. ‘ˇ‡Gˇ˛ˇ˙
  7386. Êˇ˘˝Iˇ˛ˇ€„Gˇ˛ˇÈ
  7387. ‘ˇ‡Gˇ˛ˇ˙Êˇ˘˝Iˇ˛ˇ€
  7388. „Gˇ˛ˇÈ‘ˇ‡Gˇ˛ˇ˙
  7389. Êˇ˘˝Iˇ˛ˇ€
  7390. „Gˇ˛ˇÈ
  7391. ‘ˇ‡Gˇ˛ˇ˙
  7392. Êˇ˘˝Iˇ˛ˇ€
  7393. „Gˇ˛ˇÈ‘ˇ‡Gˇ˛ˇ˙
  7394. Êˇ˘˝Iˇ˛ˇ€„Gˇ˛ˇÈ
  7395. ‘ˇ‡Gˇ˛ˇ˙Êˇ˘˝Iˇ˛ˇ€
  7396. „Gˇ˛ˇÈ
  7397. ‘ˇ‡Gˇ˛ˇ˙
  7398. Êˇ˘˝Iˇ˛ˇ€„Gˇ˛ˇÈ
  7399. ‘ˇ‡Gˇ˛ˇ˙Êˇ˘˝Iˇ˛ˇˇ˛ˇ˛ˇ€
  7400. „Gˇˇ˛ˇˇ˛ˇÈ‘ˇ‡Gˇˇˇ˛ˇ˛ˇ˙
  7401. Êˇ˘˘ˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇ€
  7402. „ˇˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇÈ
  7403. ‘ˇ‡ˇˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˙
  7404. Êˇ˘˝Iˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ€
  7405. „Gˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÈ‘ˇ‡Gˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙
  7406. Êˇ˘˝ˇ˛˛ˇ2˛ˇ˛ˇ˛ˇˇˇˇˇ˛ˇ˛ˇ˛ˇ˛˛ˇ€„Gˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇˇ˛ˇˇ˛˛˛ˇÈ
  7407. ‘ˇ‡.ˇˇˇ˛ˇˇˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˙Êˇ˘˝Iˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ€
  7408. „Gˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÈ
  7409. ‘ˇ‡Gˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙
  7410. Êˇ˘¸ˇˇ˝ˇ˛ˇ    ˇˇˇˇ˛ˇˇˇˇˇˇˇ˛ˇ€„ˇ˛ˇ ˇˇˇˇˇ˛ˇ#ˇˇˇˇˇˇˇˇˇ˛ˇÈ
  7411. ‘ˇ‡ˇ˛ˇ ˇˇˇˇˇ˛ˇ"ˇˇˇˇˇˇˇˇˇ˛ˇ˙Êˇ˘˝Iˇˇˇ˛ˇ€
  7412. „Gˇˇ˛ˇÈ‘ˇ‡Gˇˇ˛ˇ˙
  7413. Êˇ˘˝Iˇˇˇ˛ˇ€
  7414. „Gˇˇ˛ˇÈ
  7415. ‘ˇ‡Gˇˇ˛ˇ˙
  7416. Êˇ˘˝Iˇ˛ˇ€
  7417. „Gˇ˛ˇÈ‘ˇ‡Gˇ˛ˇ˙
  7418. Êˇ˘˝Iˇ˛ˇ€„Gˇ˛ˇˇˇ˛ˇÈ
  7419. ‘ˇ‡Gˇ˛ˇˇˇ˛ˇ˙Êˇ˘˝Iˇ˛ˇ€
  7420. „ ˇˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇ˛ˇÈ
  7421. ‘ˇ‡ˇ˛ˇˇˇ˛ˇ ˇˇˇˇˇˇ˛ˇˇˇˇˇ˛ˇ˙
  7422. Êˇ˘˝Iˇ˛ˇ€„&ˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇ˛ˇÈ
  7423. ‘ˇ‡Gˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙Êˇ˘˝Iˇ˛ˇ€
  7424. „/ˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇˇˇˇˇ˛˛ˇ˛ˇÈ‘ˇ‡ ˇˇˇ˛ˇˇ˛ˇ ˇˇˇˇˇ˛ˇ˛ˇ˛ˇ˙
  7425. Êˇ˘˝Iˇ˛ˇ€
  7426. „Gˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÈ
  7427. ‘ˇ‡Gˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙
  7428. Êˇ˘˝Iˇ˛ˇ€
  7429. „ˇˇˇˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇÈ‘ˇ‡ˇ˛ˇˇˇ˛ˇ˛ˇ!ˇˇˇˇˇˇˇˇ˛ˇ˙
  7430. Êˇ˘˝Iˇ˛ˇ€„Gˇˇ˛ˇÈ
  7431. ‘ˇ‡Gˇ˛˛ˇ˙Êˇ˘ıIˇ˛ˇºGˇˇˇ˛ˇªˇ‡Gˇˇ˛ˇ˙
  7432. Êˇ˘˝Iˇ˛ˇ«ˇ˜Gˇ˛ˇªˇÍˇ¯Gˇ˛ˇ˙Êˇ˘˝Iˇ˛ˇ«˝ˇ˙Gˇ˛ˇªˇÍ˛ˇ˙Gˇ˛ˇ˙
  7433. Êˇ˘˝Iˇ˛ˇΔ¸ˇ¸Gˇ˛ˇªˇÈ¸ˇ˝Gˇ˛ˇ˙
  7434. Êˇ˘˘Iˇ˛ˇ˛√ˇ˝Gˇ˛ˇ˝†ˇ˛Gˇ˛ˇ˙
  7435. Êˇ˘˝Iˇ˛ˇΔ¸ˇ¸Gˇ˛ˇªˇÈ¸ˇ˝Gˇ˛ˇ˙Êˇ˘˝Iˇ˛ˇ«˝ˇ˙Gˇ˛ˇªˇÍ˛ˇ˙Gˇ˛ˇ˙
  7436. Êˇ˘˝#ˇ˛ˇ"˛ˇ«ˇ˜Gˇ˛ˇªˇÍˇ¯Gˇ˛ˇ˙Êˇ˘ıIˇˇˇˇˇ˛ˇºGˇ˛ˇªˇ‡Gˇ˛ˇ˙
  7437. Êˇ˘˝ ˇ˛ˇ˛"ˇˇ˛ˇ¯ˇˇ«Gˇ˛ˇ¯ˇ≈ˇ‡Gˇ˛ˇ˙
  7438. Êˇ˘Ï!ˇˇˇ˚!ˇˇ˛ˇ˙˛ˇΔˇ˙ˇ¯ˇ˛ˇ˚˝ˇ≈ˇ‡Gˇ˛ˇfiˇ˘Ô ˇˇˇ˘ ˇˇ˛ˇ¸¸ˇΔˇ˛ˇ˝ ˇˇˇ˚ˇ˛ˇ˝¸ˇƒˇ‡Gˇ˛ˇfiˇ˘‹ˇˇˇ˜ˇˇ˛ˇ˝ƒˇ˝ˇˇ˚Ùˇ˚ˇˇ˛ˇ˛†ˇ˝Gˇ˛ˇfiˇ˘›ˇˇˇıˇˇ˛ˇ¸¸ˇΔˇˇÁˇ˛ˇ˝¸ˇƒˇ‡Gˇ˛ˇ˛ıˇÌˇ˘òÅºÄÆªHH‡®|èIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  7439. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  7440. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  7441.  
  7442.  
  7443.  ˛êêêÄÆª∂q‰,'‡ˇˇˇÛˇˇ˛ˇ˙˛ˇΔˇˇ¯˚ˇˆˇ˛ˇ˚˝ˇ≈ˇ‡Gˇ˛ˇÛˇˇÓˇ˘flˇˇˇÒˇˇ˛ˇ¯ˇˇ«ˇˇ˘¯ˇ¯ˇ˛ˇ¯ˇ≈ˇ‡Gˇ˛ˇÚˇˇÔˇ˘◊ˇˇˇÔˇˇ˛ˇºˇˇ˚˜ˇˇ˙ˇ˛ˇªˇ‡Gˇ˛ˇÒˇÔˇ˘◊ˇˇˇÌˇˇ˛ˇºˇˇ¸˜ˇ˛ˇˇ˚ˇ˛ˇªˇ‡Gˇ˛ˇÒˇˇˇ˘›ˇˇˇÎˇˇ˛ˇfl
  7444. flˇˇ¸˝ˇ˜ˇ˚ˇ˛ˇŒ
  7445. Òˇ‡Gˇ˛ˇˇˇ˘‡ˇˇˇÈˇˇ˛ˇfl1‡ˇˇ˝˝ˇ˚ˇˇ˛ˇ¸ˇ˛ˇœ1Ôˇ‡Gˇ˛ˇˇˇ˘›ˇˇˇÒ˝ˇ˚ˇˇ˛ˇfi·ˇˇ˝˝ˇ¸˘ˇ¸ˇ˛ˇ–
  7446.  
  7447. Óˇ‡Gˇ˛ˇˇˇ˘·ˇˇˇÚ˛ˇ˛ˇ¸ˇˇ˛ˇ›
  7448. ‚ˇˇ˝˛ˇ¸˜ˇ˝ˇ˛ˇ“
  7449. Ìˇ‡Gˇ˛ˇˇˇ˘„ˇˇˇÛˇˇ˚ˇˇ¸ˇ˛ˇ‹1‚ˇˇ˝˛ˇ¸¸ˇ˝ˇ˝ˇ˛ˇ”
  7450. Ρ‡Gˇ˛ˇˇˇ˘Êˇˇˇıˇˇ˘ˇˇ˛ˇˇ˛ˇ‹„ˇˇ˝˛ˇ˛˚ˇ˛˛ˇ˝ˇ˛ˇ‘͡‡Gˇ˛ˇˇˇ˘Âˇˇˇˆ˚ˇ¸ˇˇˇˇ˛ˇ€
  7451. ‰ˇˇ˝˛ˇ˝˝ˇ˛˝ˇ˝ˇ˛ˇ’
  7452. Èˇ‡Gˇ˛ˇˇˇ˘‡ˇˇˇ˙Ùˇ¸ˇ˛ˇ⁄1
  7453. ¡ˇ˝˝ˇ˜˝ˇ˝ˇ˛ˇ◊1
  7454. ˡ‡Gˇ˛ˇˇˇ˘‚ˇˇˇ˚˝ˇ˘ˇ˛˝ˇ˛ˇŸÂˇˇ˝˝ˇ¯˝ˇ¸ˇ˛ˇÿ
  7455.  
  7456. Êˇ‡Gˇ˛ˇˇˇ˘‡ˇˇˇ˘˚ˇ˙˝ˇ˛ˇŸ
  7457. Êˇˇ¸˝ˇ˘¸ˇ˝ˇ˛ˇŸ
  7458. ¡‡Gˇ˛ˇˇˇ˘‚ˇˇˇ˘ˇˇ˜˝ˇ˛ˇÿ1
  7459. Áˇˇ¸˚ˇ˝˘ˇ˛ˇ˛ˇ⁄‰ˇ‡Gˇ˛ˇˇˇ˘flˇˇˇ˘˝ˇ˙˝ˇ˛ˇ◊
  7460. ˡˇ˚ˇ˛ˇ˛ˇ‹
  7461. „ˇ‡Gˇ˛ˇˇˇ˘flˇˇˇ˜˙ˇ˝ˇ˛ˇ÷
  7462. Èˇˇ˙Òˇ˛ˇ˛ˇ›
  7463. ·ˇ‡Gˇ˛ˇˇˇ˘‰ˇˇˇˆˇˇ˚ˇ˛ˇ’
  7464. Èˇˇ¯˙ˇ¸ˇ˝ˇ˛ˇfi1
  7465. ‡ˇ‡Gˇ˛ˇˇˇ˘„ ˇˇˇ¯ˇˇ¸ˇ˛ˇ’
  7466. ͡ˇˇÈˇˇ˛ˇ‡
  7467.  
  7468. flˇ‡Gˇ˛ˇˇˇ˘Á!ˇˇˇ˙ˇˇ˝ˇ˛ˇ‘
  7469. Ρ¯ˇ˙˜ˇ˛ˇ·
  7470. ›ˇ‡Gˇ˛ˇˇˇ˘˘"ˇˇˇ¸!ˇˇ˛ˇ”
  7471. Ï ˇˇˇ˙ˇˇ˛ˇ‚‹ˇ‡Gˇ˛ˇˇˇ˘ı#ˇˇˇ˛"ˇˇ˛ˇ“
  7472. Ïˇıˇ˛ˇ„
  7473. €ˇ‡Gˇ˛ˇˇˇ˘Iˇˇˇˇˇ˛ˇ“
  7474. ÌGˇ˛ˇÂ
  7475. 
  7476. ⁄ˇ‡Gˇ˛ˇˇˇ˘ˇ#ˇ˛ˇ"˛ˇ—
  7477. ÓGˇ˛ˇÊ1
  7478. ÿˇ‡Gˇ˛ˇˇˇ˘ˇIˇ˛ˇ–
  7479.  
  7480. ÔGˇ˛ˇÁ
  7481. ◊ˇ‡Gˇ˛ˇˇˇ˘ˇIˇ˛ˇœ
  7482. Gˇ˛ˇË
  7483. ÷ˇ‡Gˇ˛ˇˇˇ˘ˇIˇ˛ˇŒGˇ˛ˇÍ1’ˇ‡Gˇ˛ˇˇˇ˘ˇIˇ˛ˇŒ
  7484.  
  7485. ÒGˇ˛ˇÎ
  7486. ”ˇ‡Gˇ˛ˇˇˇ˘ˇIˇ˛ˇÕ
  7487. ÚGˇ˛ˇÏ
  7488. “ˇ‡Gˇ˛ˇˇˇ˘Iˇ˛ˇÃÛGˇ˛ˇÓ1
  7489. —ˇ‡Gˇ˛ˇˇˇ˘˛Iˇ˛ˇÀ
  7490. ÛGˇ˛ˇÔ
  7491. œˇ‡Gˇ˛ˇˇˇ˘ˇIˇ˛ˇÀ
  7492. ÙGˇ˛ˇ
  7493. Œˇ‡Gˇ˛ˇˇˇ˘ˇIˇ˛ˇ ıGˇ˛ˇÒ1Õˇ‡Gˇ˛ˇˇˇ˘&∂ˇ…
  7494. ˆ∂ˇÛ
  7495.  
  7496. Ãˇ‡∂ˇˇˇ˘$˝∏ˇ»
  7497. ı∏ˇÙ
  7498.  ˇfi∏ˇˇˇ˘#˝∏ˇ«ı∏ˇı
  7499. …ˇfi∏ˇˇˇ˘Å˙
  7500. ¢»ˇÑˇˇ˘ Å˘
  7501. •
  7502. «ˇªˇˇÃˇˇ˘ů1ß1≈ˇªˇˇÃˇˇ˘Ř®
  7503.  
  7504. ƒˇº˛ˇÃˇˇ˘Ř
  7505. ´
  7506. √ˇº˝ˇÕˇˇ˘ň1≠
  7507. ¡ˇº˝ˇÕˇˇ˘ÅıØ¿ˇΩ˚ˇŒˇˇ˘"ÅÙ
  7508. ±
  7509. øˇΩ˛ˇˇˇŒˇˇ˘ÅÛ1≥1
  7510. æˇªˇÀˇˇ˘ÅÛµ
  7511.  
  7512. ºˇªˇÀˇˇ˘ò8@ª@ª‰q$,Ģ˘˘ ˚@Ô¿˘0˘˘ ˚@Ô@˘‡˘˘ ˚@Ô`˙Ģ˙?†˚@Ô0˙¯˚‡ ˚@Ô˙¯¸¯ ˚@Ô ˙¯¸ ˚@Ô˙0¯˝¿ ˚@Ô˙`¯˛¯˛ ˚@Ô˚¿¯˛~˝ ˚@Ôĸ˜¿˝ ˚@Óĸ˜¸ ˚@Ó¿¸ ˜˛˚ ˚@Ó`¸8˜Ä˚ ˚@Ó0¸`˜˙ ˚@Ó¸¿¯¸˘ ˚@Ó˝į?˘ ˚@Ó ˝¯‡˘ ˚@Ó˝ ˘¯Úˇ‡Ó˝˘˙ ˚@ Ó˝p˙¿˙ ˚@ ÓIJ¿˚¯˛˙ ˚@ Ì¿Ä˚~˝˙ ˚@ Ì`˚¿˝˙ ˚@ Ì0¸¸˙ ˚@ Ì¸˛˚IJ ˚@  Ì0˝Ä˚    MÛôÃÏ ˚@  Ì `˛˙    ReR§ ˚@ Ì¿¸˘    Re^§ ˚@ Ì˛?¯    SReP§ ˚@ Ì‡¯    çSôL§ ˚@ Ì¯˜˝ ˚@ Èˆ˝ ˚@ Í¿ˆ˙ ˚@ Î¯ı˝ ˚@ ÎÙ    Nng  ˚@ ›    Jñï@ ˚@ ›    JÜï  ˚@ ›    Jñï ˚@ ›     fe  ˚@ ›˙ ˚@ ›˙ ˚@ ›˙ ˚@ ›˙ ˚@ ›˙ ˚@ ›˙ ˚@ Ï˛  ˛˙ ˚@ !Ï Æ77
  7513. âV(6uπ鲢ˇ˛@ !Ï ™KM
  7514. QR0)5*R˛˘ˇ˛@  Ï ™CM …R(/5+“˛¯ˇÄ@  Ï ™KM
  7515. R$(5*˛¯ˇÄ@  Ï Í35    â“(&=)鞝ˇÄ@ ›¯ˇÄ@ ›¯ˇÄ@ ›¯ˇÄ@ Ï    ÄÑĸ¯ˇÄ@ Ï    ìô∑Δ·∞¸¯ˇÄ¿ Ï     â¢LÕ&I†»¸¯ˇÄÄ Ï     âít≈>O†»¸¯ˇſĠÏ     âädÕ"H†»¸¯ˇáÉÄ Ï     ìúµCF†∞¸¯ˇü˛ Í˛@˘¯ˇèÄ Íı¯ˇÉ¿ ›¯ˇÄ¿ ò8@Ī@Ī$qd,Ï˝å˘¯ˇÄ Ï    7Œg3±è9éÿ¸¯ˇÄ Ï    MIïJëç®”0¸¯ˇÄ Ï    MIïzëV´S¸¯ˇÄ Ï    MIïBëT™S¸¯ˇÄ Ï    5Ne2ë'©Œ“¸¯ˇÄ ͸¸¯ˇÄ ͸ ˚¯ˇÄ ›¯ˇÄ Î@ @
  7516. ¸¯ˇÄ Ï
  7517.  
  7518. «7çQl›L⁄Œ˝¯ˇÄ Ï
  7519. IáJ2
  7520. 3Rk*˝˛¯ˇÄ Ï
  7521. IõJ253Q´*˝˛¯ˇÄ Ï
  7522. IìJ2%3S+*˝Ú Ï GèD,›L͠IJÚ Ë˙Ú Ë ˙Ú  ›Ú  ›Ú ›˘ˇ˛˛ ›˘ˇ˛˛ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›˛¯ˇÄ ›˛¯ˇÄ  ›Ú  ›Ú  ›Ú ›˙ ˙  ›Ú  ›Ú  ›Ú  ›Ú  ›Ú ›˙ ˙  ›Ú  ›Ú  ›Ú  ›Ú  ›Ú ò8ÄÆªÄƪdqí,›˙ ˙  ›Ú  ›Ú  ›Ú ›˘ˇ˛˛ ›˘ˇ˛˛ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›¯ˇÄ ›˛¯ˇÄ ›˛¯ˇÄ  ›Ú  ›Ú  ›Ú  ›Ú  ›Ú  ›Ú  ›Ú  ›Úˇ‡    ›    ›    ›    ›òź@ªHH‡µƒêIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  7523. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  7524. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  7525.  
  7526.  
  7527.  ˛êêê@ª‰q$,'ÅÚ
  7528. ∑
  7529. ªˇªˇÀˇˇ˘ÅÒ1
  7530. π∫ˇªˇÀˇˇ˘Åª
  7531. πˇªˇÀˇˇ˘&Å
  7532. Ω
  7533. ∑ˇ√
  7534. 
  7535. 
  7536. ˇÀˇˇ˘(ÅÔ1
  7537. ø1
  7538. ∂ˇ…1
  7539. 1˙ˇÀˇˇ˘'ÅÓ
  7540. ¡
  7541. µˇŒ
  7542.  
  7543. 
  7544. ÙˇÀˇˇ˘)ÅÌ
  7545. ƒ
  7546. 
  7547. ¥ˇ‘
  7548. 
  7549. 
  7550. 
  7551. ÔˇÀˇˇ˘&ÅÏ
  7552. ≈≤ˇŸ1
  7553. 1
  7554. ÈˇÀˇˇ˘(ÅÏ
  7555. «
  7556. ±ˇfl
  7557.  
  7558. 
  7559.  
  7560. ‰ˇÀˇˇ˘(ÅÎ
  7561.  
  7562. 
  7563. ∞ˇ‰
  7564. 
  7565. 
  7566. fiˇÀˇˇ˘(ÅÍ
  7567. Ã1
  7568. ÆˇÍ
  7569. 1
  7570. ŸˇÀˇˇ˘&ÅÈ
  7571. Õ
  7572. ≠ˇÔ
  7573.  
  7574. ”ˇÀˇˇ˘(ÅÈ
  7575. œ
  7576. ¨ˇı
  7577. 
  7578. 
  7579. ŒˇÀˇˇ˘(ÅË
  7580. “1´ˇ˙1
  7581. 1»ˇÀˇˇ˘&ÅÁ
  7582.  
  7583. ‘
  7584. ©ˇ
  7585.  
  7586. 
  7587.  
  7588. √ˇÀˇˇ˘$ÅÊ
  7589. ÷
  7590. ¨
  7591. 
  7592. 
  7593. 
  7594. ΩˇÀˇˇ˘&ÅÂ◊
  7595. ∞1
  7596. 1
  7597. ˛ˇªˇÀˇˇ˘)ÅÂ
  7598.  
  7599. ⁄
  7600. µ
  7601.  
  7602. 
  7603.  
  7604. ˘ˇªˇÀˇˇ˘#ʼn
  7605. ‹
  7606. ∏
  7607. 
  7608. 
  7609. Ûˇ˘Çˇ˘ˇ˘0Å„fi1Ω
  7610. 1
  7611. Óˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘/Å‚
  7612. ‡
  7613.  
  7614. ¡
  7615.  
  7616. ˡ˘ˇƒˇÀˇ˘ˇ˘ˇ˘0Å‚
  7617. ‚
  7618. ≈
  7619. 
  7620. 
  7621. „ˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘/Å·‰
  7622. …1
  7623. 1›ˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘0Ň
  7624. ʌ
  7625.  
  7626. 
  7627.  
  7628. ÿˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘0Åfl
  7629. È
  7630. “
  7631. 
  7632. 
  7633. “ˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘7ÅfiÍ1÷1
  7634. 1
  7635. Õˇ˘ˇ¯˛ˇ›ˇıˇÀˇ˘ˇ˘ˇ˘[Åfi
  7636. Ï
  7637.  
  7638. ⁄
  7639. 
  7640.  
  7641. «ˇ˘ˇ˘˛˛ ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ıˇÀˇ˘ˇ˘ˇ˘ZÅ›
  7642. Ó
  7643. fl
  7644. 
  7645. 
  7646. 
  7647. ¬ˇ˘ˇ˘ˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇıˇÀˇ˘ˇ˘ˇ˘ZÅ‹1Ò
  7648. ‰
  7649. 1
  7650. ºˇ˘ˇ˘ˇ¸ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇıˇÀˇ˘ˇ˘ˇ˘YÅ€ÚÁ
  7651.  
  7652. ∂ˇ˘ˇ˘ˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛˝ˇˇˇıˇÀˇ˘ˇ˘ˇ˘YÅ€
  7653. Ù
  7654. Ï
  7655. 
  7656. 
  7657. ±ˇ˘ˇ¯˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇıˇÀˇ˘ˇ˘ˇ˘1Å⁄Ù
  7658. 1
  7659. 1´ˇ˘ˇËˇfiˇÀˇ˘ˇ˘ˇ˘*Å¿
  7660.  
  7661. 
  7662.  
  7663. ¶ˇ˘ˇËˇfiˇÀˇ˘ˇ˘ˇ˘%Å≈
  7664. 
  7665. 
  7666. †ˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘/ÅÀ1
  7667. 1
  7668. õˇ˘ˇ¯ˇÛˇˇfiˇÀˇ˘ˇ˘ˇ˘AÅÀïˇ˘ˇ˘ˇˇ˛ˇ˛ˇˇˇ˛ˇ ˇˇˇˇ˛ˇÍˇÀˇ˘ˇ˘ˇ˘=ÅÅfiˇ˘ˇ¯ˇˇˇˇˇˇˇˇˇˇˇˇˇˇÈˇÀˇ˘ˇ˘ˇ˘=ÅÅfiˇ˘ˇ¯
  7669. ˇˇˇˇˇˇ˝
  7670. ˇˇˇˇˇˇˇÍˇÀˇ˘ˇ˘ˇ˘?ÅÅfiˇ˘ˇ¯ˇˇ˛ˇˇˇˇ˛ˇˇˇ˛ˇ˛ˇÎˇÀˇ˘ˇ˘ˇ˘<ÅÅfiˇ˘ˇ¯˝ˇˇˇˇˇˇˇˇˇˇˇˇÍˇÀˇ˘ˇ˘ˇ˘ÅÅfiˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘ÅÅfiˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘ÅÅfiˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘ÅÅfiˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘ÅÅfiˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘ÅÅfiˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘8Å’˝ˇÛˇˇÊˇˇ˛ˇÚˇÓˇÂˇ˘ˇƒˇÀˇ˘ˇ˘ˇ˘tÅ’ˇ˛ˇˇ˛ˇ˛
  7671. ˇ˛ˇˇ˛ˇ˛ˇˇ˛˝ˇˇ˛ˇ˛
  7672. ˇ˛ˇ˛ˇˇ˛ˇˇ¸ˇ˛ˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛˛ˇÂˇ˘ˇË∏ˇÔˇ˘ˇ˘ˇ˘æÅ’ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˛ˇˇˇˇ˛ˇˇ˚ˇˇˇˇˇˇˇˇˇˇˇˇˇÂˇ˘ˇËHˇˇÔˇ˘ˇ˘ˇ˘πÅ’¸ˇˇˇˇˇ˝    ˇˇˇˇˇˇ˝ˇ˝ˇ ˇˇˇˇˇ˛ˇˇ¸ˇ˝ˇ
  7673. ˇˇˇˇˇˇ˝ˇˇˇÂˇ˘ˇËGˇ˛ˇÒˇ˘ˇ˘ˇ˘ªÅ’ˇ˛ˇˇˇˇ˛ˇˇˇ˛ˇ˛ˇ˝ˇˇ˚    ˛ˇ˛ˇˇ˛ˇ˛˝ˇˇ¸ ˇˇ˛ˇˇˇˇ˝ˇˇÂˇ˘ˇËGˇ˛ˇÒˇ˘ˇ˘ˇ˘ªÅ’ˇ˛˛ˇˇˇ˛
  7674. ˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇ˛ˇˇˇ˛ˇˇ¸ˇˇˇ˛˝ˇ
  7675. ˇˇˇˇˇ˛˛ˇÂˇ˘ˇËGˇ˛ˇÒˇ˘ˇ˘ˇ˘gÅÅfiˇ˘ˇËGˇ˛ˇÒˇ˘ˇ˘ˇ˘gÅÅfiˇ˘ˇËGˇ˛ˇÒˇ˘ˇ˘ˇ˘gÅÅfiˇ˘ˇËGˇ˛ˇÒˇ˘ˇ˘ˇ˘Å’ˇ˜ˇˇÚˇ˝ˇÒˇˇÒˇœˇ˘ˇËGˇ˛ˇÒˇ˘ˇ˘ˇ˘≠Å÷ˇˇˇˇ¸˛˛ˇˇ˛ˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇ¸˛˛ˇ˛˛˛ˇˇ˛ˇ˝ˇˇˇˇ“ˇ˘ˇËGˇ˛ˇÚˇˇ˘ˇ˘ˇ˘´Å’ˇˇˇ˛ˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˙ ˇˇˇˇˇˇˇ¸ˇˇˇ”ˇ˘ˇËGˇ˛ˇÚˇ¯ˇ˘ˇ˘©Å’ˇˇˇ˛ ˇˇˇˇˇ˛ˇˇˇˇ˛ˇˇ¸ˇ˙ˇˇˇ¸ˇˇ¸ˇˇˇ”ˇ˘ˇËˇ˝ˇ0ˇˇˇ˛ˇ˚˛ˇ˚ˇ¯ˇ˘ˇ˘ØÅ’ˇˇˇ˛ˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇ˙ˇ˛ˇˇ˛ˇˇ¸ˇˇˇ”ˇ˘ˇËGˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇˇ˛˛ˇ˝˝ˇ¸˛ˇ¯ˇ˘ˇ˘™Å’ˇˇˇ¸˝ˇˇ˛ˇ˛ˇ    ˇˇˇˇˇ˛ˇˇˇˇ˝ˇˇˇ˛ˇˇˇˇ¸ˇˇˇ“ˇ˘ˇËGˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇıˇˆˇ˘ˇ˘kÅ√ˇÁˇ∏ˇ˘ˇËˇ¸ˇ/ˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˛¸ˇˇ˘ˇ˘iÅ√ˇùˇ˘ˇËGˇ˛˛ˇˇˇˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ¸˝ˇÒˇ˘ˇ˘hÅÅfiˇ˘ˇËˇˇ˛ˇ-ˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇˇÒˇ˘ˇ˘òź@ĪHH‡®|ëIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  7676. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  7677. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  7678.  
  7679.  
  7680.  ˛êêê@Ī$qd,'sÅ’˛ˇ›ˇ˛ˇˇ˛ˇˇºˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘¨Å÷˛˛ ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛˛˛ˇ˛˛ˇ    ˛ˇ˛ˇ˛ˇ˛˛ˇˇˇ˛ˇ”ˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘´Å÷ˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ ˇˇˇˇˇˇˇ“ˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘¶Å÷ˇ¸ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˚ˇ“ˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘¨Å÷ˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛˝ˇˇˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇˇˇ˛ˇ“ˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘¨Å’˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˝ˇˇˇ˛ˇ˛ˇˇˇˇˇ’ˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘mÅ≈ˇ–ˇ˙ˇ’ˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘jÅ≈ˇ“ˇˇÃˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘ÅÅ ˇ˛ˇˇ¯ˇˇ˘ˇÌˇˇ˜ˇˇ’ˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘kÅ’ˇ˛ˇˇ˛˛˛ˇˇˇˇ˛˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛¸#ˇˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ›ˇ˘ˇË∂ˇËˇ˘ˇ˘hÅ‘˛ˇˇˇˇ˛ˇˇˇˇ˝˛ˇˇˇˇ˛ˇˇˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ›ˇ˘ˇÊ∏ˇËˇ˘ˇ˘oÅ÷ ˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ›ˇ˘ˇÊ∏ˇËˇ˘ˇ˘kÅ÷ ˛ˇ˛ˇˇ˛˛˛ˇˇˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛$ˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇ˛ˇˇˇ›ˇ˘ˇÑˇ˘ˇ˘bÅ’˝ˇˇ˛˛ˇ˛ˇˇˇˇ˛˝ˇˇ˛ˇ˝ˇˇˇ¸˛ˇ˛ˇ˛ˇ    ˇˇˇˇ˛ˇ
  7681. ˇˇˇˇˇˇˇflˇ˘ˇÑˇ˘ˇ˘ Å¥ˇˇ˛ˇ¬ˇ˘ˇÑˇ˘ˇ˘!ŵˇ˛ˇ˛ˇ¬ˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇË∏ˇÊˇ˘ˇ˘bÅÅfiˇ˘ˇËHˇˇÊˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘bÅÅfiˇ˘ˇËˇ˝ˇ0ˇˇˇˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇËˇ˘ˇ˘aÅÅfiˇ˘ˇËˇ¸ˇ/ˇˇˇˇˇˇˇˇˇˇˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛˛ˇˇˇˇ˛ˇˇˇ˛ˇ˛˛˛ˇËˇ˘ˇ˘bÅÅfiˇ˘ˇËˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˝ˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘ÅÅfiˇ˘ˇË∂ˇËˇ˘ˇ˘ÅÅfiˇ˘ˇÊ∏ˇËˇ˘ˇ˘ÅÅfiˇ˘ˇÊ∏ˇËˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇƒˇ¬ˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇƒˇ¬ˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘òÅºÄÆªHH‡µƒíIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  7682. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  7683. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  7684.  
  7685.  
  7686.  ˛êêêÄÆªdqí,'ÅÅfiˇ˘ˇƒˇ¬ˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇË∏ˇÊˇ˘ˇ˘bÅÅfiˇ˘ˇËHˇˇÊˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇˇˇ˛ˇ˛ˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËˇˇˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËˇ˛˛ˇ0˛ˇ˛ˇˇˇˇˇ˛ˇˇˇˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËˇˇ˛ˇ-ˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘cÅÅfiˇ˘ˇËGˇ˛ˇËˇ˘ˇ˘ÅÅfiˇ˘ˇË∂ˇËˇ˘ˇ˘ÅÅfiˇ˘ˇÊ∏ˇËˇ˘ˇ˘ÅÅfiˇ˘ˇÊ∏ˇËˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘ˇÑˇ˘ˇ˘ÅÅfiˇ˘Çˇ˘ˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ò8@ª@ªíq“,    ›    ›    ›    ›    ›ˇ……………………………………………………………………………………………………………………………………………………………ò8@Ī@Ī“q,…………………………………………………………………………………………………………………………………………………………………………ò8ÄÆªÄƪq@,…………………………………………………………………………………………………………………………òź@ªHH‡®|ìIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  7687. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  7688. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  7689.  
  7690.  
  7691.  ˛êêê@ªíq“,'ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ÅÅfiˇÅÚˇ˘ ÅÅfiŎˇ˘ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈òź@ĪHH‡µƒîIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  7692. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  7693. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  7694.  
  7695.  
  7696.  ˛êêê@Ī“q,'ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈òÅºÄÆªHH‡®|ïIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  7697. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  7698. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  7699.  
  7700.  
  7701.  ˛êêêÄÆªq@,'ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈ÅÅÅ≈†è†É†ø
  7702. d,     Helvetica
  7703.     .°dONLNd|Sá{(£qFigure 3°dONLNd    àSìJ* :Processing an Application’s Request for Component Services°dONLNdD¶ñ±á+C1Autoregistration versus application registration.°dONLNdu¶á±ä)Ò , Palatino
  7704. °dONLNdv•ä± )There are two ways that you°dONLNdí±ñΩ (Ÿ¥Scan register a component. By far the easiest way is to build a standalone component°dONLNdÊΩñ…* Pfile of type 'thng'. At system startup, the Component Manager will automatically°dONLNd7…ñ’ * Uregister any component that it finds in files of type 'thng' in the System Folder and°dONLNdç’ñ·* Tin the Extensions folder (in System 7) and its subfolders. The 'thng' component file°dONLNd‚·ñÌ* Smust contain both your component and the corresponding component ('thng') resource.°dONLNd6Ìñ˘* SThe definition of this resource can be found in the Components.h header file and is°dONLNdä˘ñ”* shown below.,
  7705. Courier
  7706.     °dONLNdóñÊ*typedef struct {°dONLNd©§)Í+ unsigned long °dONLNd∏˚))Wtype;°dONLNd¿D)û)I /* 4-byte code */°dONLNd‘*§5¬(Q¬short °dONLNdfi*˚5
  7707. )Wid;°dONLNd‚6ñA·(]¥} ResourceSpec; xBx/,Times
  7708. ({& 
  7709. +
  7710. 144ìq·3
  7711. +md)e)v)e)l)o)p)  
  7712. )
  7713. December 1992ˇ†æ°¿9pse
  7714. currentpoint
  7715. /picTop exch def
  7716. /picLeft exch def
  7717. psb
  7718. †ø†æ°¿=pse
  7719. currentpoint
  7720. /picBottom exch def
  7721. /picRight exch def
  7722. psb
  7723. †ø†æ°¿[ -350 -87 93 268]
  7724. °¿€1 dict begin /s exch def
  7725. picLeft picTop translate
  7726. picRight picLeft sub s 2 get s 0 get sub div
  7727. picBottom picTop sub s 1 get s 3 get sub div
  7728. scale
  7729. s 0 get neg s 3 get neg translate
  7730. end
  7731. /showpage {} def
  7732. /copypage {} def
  7733. °¿ %!PS-Adobe-3.0 EPSF-3.0
  7734. %%Creator: Adobe Illustrator(TM) 3.2
  7735. %%For: (Diane Wilcox) (Apple Computer, Inc.)
  7736. %%Title: (Woodcock Fig_03MSW)
  7737. %%CreationDate: (10/2/92) (1:29 PM)
  7738. %%BoundingBox: -350 -87 93 268
  7739. %%DocumentProcessColors: Magenta Black
  7740. %%DocumentFonts: Helvetica
  7741. %%+ Helvetica-Bold
  7742. %%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0
  7743. %%+ procset Adobe_cmykcolor 1.1 0
  7744. %%+ procset Adobe_cshow 1.1 0
  7745. %%+ procset Adobe_customcolor 1.0 0
  7746. %%+ procset Adobe_typography_AI3 1.0 1
  7747. %%+ procset Adobe_IllustratorA_AI3 1.0 1
  7748. %AI3_ColorUsage: Color
  7749. %AI3_TemplateBox: -174 41 -174 41
  7750. %AI3_TileBox: -450 -324 102 406
  7751. %AI3_DocumentPreview: Macintosh_ColorPic
  7752. %%EndComments
  7753. %%BeginProlog
  7754. %%BeginResource: procset Adobe_packedarray 2.0 0
  7755. %%Title: (Packed Array Operators)
  7756. %%Version: 2.0 
  7757. %%CreationDate: (8/2/90) ()
  7758. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  7759. userdict /Adobe_packedarray 5 dict dup begin put
  7760. /initialize            % - initialize -
  7761. {
  7762. /packedarray where
  7763.     {
  7764.     pop
  7765.     }
  7766.     {
  7767.     Adobe_packedarray begin
  7768.     Adobe_packedarray
  7769.         {
  7770.         dup xcheck
  7771.             {
  7772.             bind
  7773.             } if
  7774.         userdict 3 1 roll put
  7775.         } forall
  7776.     end
  7777.     } ifelse
  7778. } def
  7779. /terminate            % - terminate -
  7780. {
  7781. } def
  7782. /packedarray        % arguments count packedarray array
  7783. {
  7784. array astore readonly
  7785. } def
  7786. /setpacking            % boolean setpacking -
  7787. {
  7788. pop
  7789. } def
  7790. /currentpacking        % - setpacking boolean
  7791. {
  7792. false
  7793. } def
  7794. currentdict readonly pop end
  7795. %%EndResource
  7796. Adobe_packedarray /initialize get exec
  7797. %%BeginResource: procset Adobe_cmykcolor 1.1 0
  7798. %%Title: (CMYK Color Operators)
  7799. %%Version: 1.1 
  7800. %%CreationDate: (1/23/89) ()
  7801. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  7802. currentpacking true setpacking
  7803. userdict /Adobe_cmykcolor 4 dict dup begin put
  7804. /initialize            % - initialize -
  7805. {
  7806. /setcmykcolor where
  7807.     {
  7808.     pop
  7809.     }
  7810.     {
  7811.     userdict /Adobe_cmykcolor_vars 2 dict dup begin put
  7812.     /_setrgbcolor
  7813.         /setrgbcolor load def
  7814.     /_currentrgbcolor
  7815.         /currentrgbcolor load def
  7816.     Adobe_cmykcolor begin
  7817.     Adobe_cmykcolor
  7818.         {
  7819.         dup xcheck
  7820.             {
  7821.             bind
  7822.             } if
  7823.         pop pop
  7824.         } forall
  7825.     end
  7826.     end
  7827.     Adobe_cmykcolor begin
  7828.     } ifelse
  7829. } def
  7830. /terminate            % - terminate -
  7831. {
  7832. currentdict Adobe_cmykcolor eq
  7833.     {
  7834.     end
  7835.     } if
  7836. } def
  7837. /setcmykcolor        % cyan magenta yellow black setcmykcolor -
  7838. {
  7839. 1 sub 4 1 roll
  7840. 3
  7841.     {
  7842.     3 index add neg dup 0 lt
  7843.         {
  7844.         pop 0
  7845.         } if
  7846.     3 1 roll
  7847.     } repeat
  7848. Adobe_cmykcolor_vars /_setrgbcolor get exec
  7849. pop
  7850. } def 
  7851. /currentcmykcolor    % - currentcmykcolor cyan magenta yellow black
  7852. {
  7853. Adobe_cmykcolor_vars /_currentrgbcolor get exec
  7854. 3
  7855.     {
  7856.     1 sub neg 3 1 roll
  7857.     } repeat
  7858. 0
  7859. } def
  7860. currentdict readonly pop end
  7861. setpacking
  7862. %%EndResource
  7863. %%BeginResource: procset Adobe_cshow 1.1 0
  7864. %%Title: (cshow Operator)
  7865. %%Version: 1.1 
  7866. %%CreationDate: (1/23/89) ()
  7867. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  7868. currentpacking true setpacking
  7869. userdict /Adobe_cshow 3 dict dup begin put
  7870. /initialize            % - initialize -
  7871. {
  7872. /cshow where
  7873.     {
  7874.     pop
  7875.     }
  7876.     {
  7877.     userdict /Adobe_cshow_vars 1 dict dup begin put
  7878.     /_cshow        % - _cshow proc
  7879.         {} def
  7880.     Adobe_cshow begin
  7881.     Adobe_cshow
  7882.         {
  7883.         dup xcheck
  7884.             {
  7885.             bind
  7886.             } if
  7887.         userdict 3 1 roll put
  7888.         } forall
  7889.     end
  7890.     end
  7891.     } ifelse
  7892. } def
  7893. /terminate            % - terminate -
  7894. {
  7895. } def
  7896. /cshow                % proc string cshow -
  7897. {
  7898. exch
  7899. Adobe_cshow_vars
  7900.     exch /_cshow
  7901.     exch put
  7902.     {
  7903.     0 0 Adobe_cshow_vars /_cshow get exec
  7904.     } forall
  7905. } def
  7906. currentdict readonly pop end
  7907. setpacking
  7908. %%EndResource
  7909. %%BeginResource: procset Adobe_customcolor 1.0 0
  7910. %%Title: (Custom Color Operators)
  7911. %%Version: 1.0 
  7912. %%CreationDate: (5/9/88) ()
  7913. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  7914. currentpacking true setpacking
  7915. userdict /Adobe_customcolor 5 dict dup begin put
  7916. /initialize            % - initialize -
  7917. {
  7918. /setcustomcolor where
  7919.     {
  7920.     pop
  7921.     }
  7922.     {
  7923.     Adobe_customcolor begin
  7924.     Adobe_customcolor
  7925.         {
  7926.         dup xcheck
  7927.             {
  7928.             bind
  7929.             } if
  7930.         pop pop
  7931.         } forall
  7932.     end
  7933.     Adobe_customcolor begin
  7934.     } ifelse
  7935. } def
  7936. /terminate            % - terminate -
  7937. {
  7938. currentdict Adobe_customcolor eq
  7939.     {
  7940.     end
  7941.     } if
  7942. } def
  7943. /findcmykcustomcolor    % cyan magenta yellow black name findcmykcustomcolor object
  7944. {
  7945. 5 packedarray
  7946. }  def
  7947. /setcustomcolor        % object tint setcustomcolor -
  7948. {
  7949. exch
  7950. aload pop pop
  7951. 4
  7952.     {
  7953.     4 index mul 4 1 roll
  7954.     } repeat
  7955. 5 -1 roll pop
  7956. setcmykcolor
  7957. } def
  7958. /setoverprint        % boolean setoverprint -
  7959. {
  7960. pop
  7961. } def
  7962. currentdict readonly pop end
  7963. setpacking
  7964. %%EndResource
  7965. %%BeginResource: procset Adobe_typography_AI3 1.1 0
  7966. %%Title: (Typography Operators)
  7967. %%Version: 1.0 
  7968. %%CreationDate:(5/31/90) ()
  7969. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  7970. currentpacking true setpacking
  7971. userdict /Adobe_typography_AI3 47 dict dup begin put
  7972. /initialize            % - initialize -
  7973. {
  7974. /TZ
  7975.  where
  7976.     {
  7977.     pop
  7978.     }
  7979.     {
  7980.     Adobe_typography_AI3 begin
  7981.     Adobe_typography_AI3
  7982.         {
  7983.         dup xcheck
  7984.             {
  7985.             bind
  7986.             } if
  7987.         pop pop
  7988.         } forall
  7989.     end
  7990.     Adobe_typography_AI3 begin
  7991.     } ifelse
  7992. } def
  7993. /terminate            % - terminate -
  7994. {
  7995. currentdict Adobe_typography_AI3 eq
  7996.     {
  7997.     end
  7998.     } if
  7999. } def
  8000. % [ number value stream [ array for encoding modification ] modifyEncoding ==> [ modified array ]
  8001. /modifyEncoding
  8002. {
  8003.     /_tempEncode exch ddef
  8004.     
  8005.     % pointer for sequential encodings
  8006.     /_pntr 0 ddef
  8007.     
  8008.     {
  8009.         % get bottom object
  8010.         counttomark -1 roll
  8011.         % is it a mark ?
  8012.         dup type dup /marktype eq         
  8013.         {
  8014.             % exit
  8015.             pop pop exit
  8016.         }
  8017.         {
  8018.             % ... object ... type ....
  8019.             % insert if a nametype
  8020.             /nametype eq
  8021.             {
  8022.                 % insert the name at _pntr and increment pointer
  8023.                 _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll
  8024.                 put
  8025.             }
  8026.             {
  8027.                 % reset _pntr if it's a number
  8028.                 /_pntr exch ddef                    
  8029.             }
  8030.             ifelse
  8031.         }
  8032.         ifelse
  8033.     }
  8034.     loop    
  8035.     
  8036.     % return the modified encoding
  8037.     _tempEncode
  8038. }
  8039. def
  8040. /TE    % Set std platform encoding     % (encoding pairs) TE -
  8041. {
  8042.     StandardEncoding 256 array copy modifyEncoding 
  8043.     /_nativeEncoding exch def
  8044. } def
  8045. % re-define font
  8046. % expected arguments
  8047. % for 'normal fonts : 
  8048. % [ /_Helvetica-Bold/Helvetica-Bold direction fontScript defaultEncoding TZ
  8049. %
  8050. % for cartographic, pictographic, and expert fonts :
  8051. % [ ... number value stream ... /_Symbol/Symbol 
  8052. %    direction fontScript defaultEncoding TZ
  8053. % for blended fonts w/ default encoding :
  8054. % [ /_AdobeSans_20ULig1XCond-Bold/AdobeSans 
  8055. %    direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
  8056. % for blended fonts w/ special encoding :
  8057. % [ ... number value stream ... /_AdobeSans_20ULig1XCond/AdobeSans 
  8058. %    direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
  8059. /TZ        
  8060. {
  8061.     % set weight vector (if present)
  8062.     dup type /arraytype eq {/_wv exch def} {/_wv 0 def} ifelse 
  8063.     % platform dependent coding flag
  8064.     /_useNativeEncoding exch def
  8065.     % pop fontScript & direction
  8066.     pop pop
  8067.     
  8068.     % create a new dictionary with length
  8069.     % equal to original dictionary length + 2
  8070.     % copy all the key/value pairs except FID
  8071.     % call makeblended font with the weight values if _wv is an array
  8072.     findfont _wv type /arraytype eq {_wv makeblendedfont} if dup length 2 add dict
  8073.     
  8074.     begin
  8075.     
  8076.         % copy all the values but the FID
  8077.         % into the new dictionary
  8078.         mark exch
  8079.         {
  8080.             1 index /FID ne { def } if cleartomark mark
  8081.         }
  8082.         forall
  8083.         % discard last mark
  8084.         pop
  8085.         
  8086.         % define FontName
  8087.         /FontName exch def
  8088.         
  8089.         % if no re-encoding stream is present
  8090.         % then if the base encoding vector of the font
  8091.         % is the same as StandardEncoding
  8092.         % and the use platform encoding flag is true
  8093.         % then install AI platform encoding
  8094.         % else leave the base encoding in effect
  8095.         counttomark 0 eq
  8096.         {
  8097.             1 _useNativeEncoding eq
  8098.             {
  8099.                 /Encoding _nativeEncoding def
  8100.             }
  8101.             if
  8102.             % clean up
  8103.             cleartomark
  8104.         }
  8105.         {    
  8106.             % custom encoding to be done
  8107.             % start off with a copy of the font's standard encoding
  8108.             /Encoding load 256 array copy 
  8109.             modifyEncoding /Encoding exch def
  8110.         }
  8111.         ifelse        
  8112.         FontName currentdict
  8113.     end
  8114.     
  8115.     % register the new font
  8116.     definefont pop
  8117. }
  8118. def
  8119. % text painting operators
  8120. /tr                    % string tr ax ay string 
  8121. {
  8122. _ax _ay 3 2 roll
  8123. } def
  8124. /trj                % string trj cx cy fillchar ax ay string 
  8125. {
  8126. _cx _cy _sp _ax _ay 6 5 roll
  8127. } def
  8128. /a0
  8129. {
  8130. /Tx    % text                            % textString Tx -
  8131.     {
  8132.     dup 
  8133.     currentpoint 3 2 roll
  8134.     tr _psf
  8135.     newpath moveto
  8136.     tr _ctm _pss
  8137.     } ddef
  8138. /Tj    % justified text                % textString Tj -
  8139.     {
  8140.     dup
  8141.     currentpoint 3 2 roll
  8142.     trj _pjsf
  8143.     newpath moveto
  8144.     trj _ctm _pjss
  8145.     } ddef
  8146.     
  8147. } def
  8148. /a1
  8149. {
  8150. /Tx    % text                            % textString Tx -
  8151.     {
  8152.     dup currentpoint 4 2 roll gsave
  8153.     dup currentpoint 3 2 roll
  8154.     tr _psf
  8155.     newp°¿ ath moveto
  8156.     tr _ctm _pss
  8157.     grestore 3 1 roll moveto tr sp
  8158.     } ddef
  8159. /Tj    % justified text                % textString Tj -
  8160.     {
  8161.     dup currentpoint 4 2 roll gsave
  8162.     dup currentpoint 3 2 roll
  8163.     trj _pjsf
  8164.     newpath moveto
  8165.     trj _ctm _pjss
  8166.     grestore 3 1 roll moveto tr sp
  8167.     } ddef
  8168.     
  8169. } def
  8170. /e0
  8171. {
  8172. /Tx    % text                            % textString Tx -
  8173.     {
  8174.     tr _psf
  8175.     } ddef
  8176. /Tj    % justified text                % textString Tj -
  8177.     {
  8178.     trj _pjsf
  8179.     } ddef
  8180. } def
  8181. /e1
  8182. {
  8183. /Tx    % text                            % textString Tx -
  8184.     {
  8185.     dup currentpoint 4 2 roll gsave 
  8186.     tr _psf  
  8187.     grestore 3 1 roll moveto tr sp 
  8188.     } ddef
  8189. /Tj    % justified text                % textString Tj -
  8190.     {
  8191.     dup currentpoint 4 2 roll gsave 
  8192.     trj _pjsf
  8193.     grestore 3 1 roll moveto tr sp 
  8194.     } ddef
  8195. } def
  8196. /i0
  8197. {
  8198. /Tx    % text                            % textString Tx -
  8199.     {
  8200.     tr sp
  8201.     } ddef
  8202. /Tj    % justified text                % textString Tj -
  8203.     {
  8204.     trj jsp
  8205.     } ddef
  8206. } def
  8207. /i1
  8208. {
  8209. W N
  8210. } def
  8211. /o0
  8212. {
  8213. /Tx    % text                            % textString Tx -
  8214.     {
  8215.     tr sw rmoveto
  8216.     } ddef
  8217. /Tj    % justified text                % textString Tj -
  8218.     {
  8219.     trj swj rmoveto
  8220.     } ddef
  8221. } def
  8222. /r0
  8223. {
  8224. /Tx    % text                            % textString Tx -
  8225.     {
  8226.     tr _ctm _pss
  8227.     } ddef
  8228. /Tj    % justified text                % textString Tj -
  8229.     {
  8230.     trj _ctm _pjss
  8231.     } ddef
  8232. } def
  8233. /r1
  8234. {
  8235. /Tx    % text                            % textString Tx -
  8236.     {
  8237.     dup currentpoint 4 2 roll currentpoint gsave newpath moveto
  8238.     tr _ctm _pss 
  8239.     grestore 3 1 roll moveto tr sp 
  8240.     } ddef
  8241. /Tj    % justified text                % textString Tj -
  8242.     {
  8243.     dup currentpoint 4 2 roll currentpoint gsave newpath moveto
  8244.     trj _ctm _pjss
  8245.     grestore 3 1 roll moveto tr sp 
  8246.     } ddef
  8247. } def
  8248. % font operators
  8249. % Binding
  8250. /To    % begin text                     % bindType To -
  8251. {
  8252.     pop _ctm currentmatrix pop
  8253. } def
  8254. /TO    % end text                    % TO -
  8255. {
  8256.     Te _ctm setmatrix newpath
  8257. } def
  8258. % Text paths
  8259. /Tp    % begin text path                % a b c d tx ty startPt Tp -
  8260. {
  8261.     pop _tm astore pop _ctm setmatrix 
  8262.     _tDict begin /W {} def /h {} def
  8263. } def
  8264. /TP    % end text path                    % TP -
  8265. {
  8266.     end
  8267.     iTm 0 0 moveto
  8268. } def
  8269. % Render mode & matrix operators
  8270. /Tr    % begin render                    % render Tr - 
  8271. {
  8272.     _render 3 le {currentpoint newpath moveto} if
  8273.     dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse
  8274.     dup /_render exch ddef
  8275.     _renderStart exch get load exec
  8276. } def
  8277. /iTm % internal set text matrix        % - iTm -    (uses _tm as implicit argument)
  8278. {
  8279. _ctm setmatrix _tm concat 0 _rise translate _hs 1 scale
  8280. } def
  8281. /Tm % set text matrix                % a b c d tx ty Tm -
  8282. {
  8283. _tm astore pop iTm 0 0 moveto
  8284. } def
  8285. /Td % translate text matrix         % tx ty Td -
  8286. {
  8287. _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto
  8288. } def
  8289. /Te    % end render                    % - Te -
  8290. {
  8291.     _render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse
  8292.     /_render -1 ddef
  8293. } def
  8294. % Attributes
  8295. /Ta    % set alignment                    % alignment Ta -
  8296. {
  8297. pop
  8298. } def
  8299. /Tf    % set font name and size        % fontname size Tf -
  8300. {
  8301. dup 1000 div /_fScl exch ddef
  8302. exch findfont exch scalefont setfont
  8303. } def
  8304. /Tl    % set leading                    % leading paragraphLeading Tl -
  8305. {
  8306. pop
  8307. 0 exch _leading astore pop
  8308. } def
  8309. /Tt    % set user tracking                % userTracking Tt -
  8310. {
  8311. pop
  8312. } def
  8313. /TW % set word spacing                % minSpace optSpace maxSpace TW -
  8314. {
  8315. 3 npop
  8316. } def
  8317. /Tw    % set computed word spacing        % wordSpace Tw
  8318. {
  8319. /_cx exch ddef
  8320. } def
  8321. /TC % set character spacing            % minSpace optSpace maxSpace TC -
  8322. {
  8323. 3 npop
  8324. } def
  8325. /Tc    % set computed char spacing     % charSpace Tc -
  8326. {
  8327. /_ax exch ddef
  8328. } def
  8329. /Ts % set super/subscripting (rise)    % rise Ts -
  8330. {
  8331. /_rise exch ddef
  8332. currentpoint
  8333. iTm
  8334. moveto
  8335. } def
  8336. /Ti    % set indentation                % firstStartIndent otherStartIndent stopIndent Ti -
  8337. {
  8338. 3 npop
  8339. } def
  8340. /Tz % set horizontal scaling        % scalePercent Tz -
  8341. {
  8342. 100 div /_hs exch ddef
  8343. iTm
  8344. } def
  8345. /TA % set pairwise kerning            % autoKern TA -
  8346.                                     %    autoKern = 0 -> no pair kerning
  8347.                                     %             = 1 -> automatic pair kerning
  8348. {
  8349. pop
  8350. } def
  8351. /Tq % set hanging quotes            % hangingQuotes Tq -
  8352.                                     %    hangingQuotes     = 0 -> no hanging quotes
  8353.                                     %                     = 1 -> hanging quotes
  8354. {
  8355. pop
  8356. } def
  8357. % Text Bodies
  8358. /TX {pop} def
  8359. %/Tx    % non-justified text            % textString Tx -
  8360. %/Tj    % justified text                % textString Tj -
  8361. /Tk    % kern                            % autoKern kernValue Tk -
  8362.                                     %      autoKern = 0 -> manual kern, = 1 -> auto kern
  8363.                                     %    kernValue = kern value in em/1000 space
  8364. {
  8365. exch pop _fScl mul neg 0 rmoveto
  8366. } def
  8367. /TK    % non-printing kern                % autoKern kernValue TK -
  8368. {
  8369. 2 npop
  8370. } def
  8371. /T* % carriage return & line feed    % - T* -
  8372. {
  8373. _leading aload pop neg Td
  8374. } def
  8375. /T*- % carriage return & negative line feed    % - T*- -
  8376. {
  8377. _leading aload pop Td
  8378. } def
  8379. /T-    % print a discretionary hyphen    % - T- -
  8380. {
  8381. _hyphen Tx
  8382. } def
  8383. /T+    % discretionary hyphen hyphen    % - T+ -
  8384. {} def
  8385. /TR    % reset pattern matrix             % a b c d tx ty TR -
  8386. {
  8387. _ctm currentmatrix pop     
  8388. _tm astore pop 
  8389. iTm 0 0 moveto 
  8390. } def
  8391. /TS    % special chars                    % textString justified TS -
  8392. {
  8393. 0 eq {Tx} {Tj} ifelse
  8394. } def
  8395. currentdict readonly pop end
  8396. setpacking
  8397. %%EndResource
  8398. %%BeginResource: procset Adobe_IllustratorA_AI3 1.0 2
  8399. %%Title: (Adobe Illustrator (R) Version 3.0 Abbreviated Prolog)
  8400. %%Version: 1.0 
  8401. %%CreationDate: (7/22/89) ()
  8402. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  8403. currentpacking true setpacking
  8404. userdict /Adobe_IllustratorA_AI3 61 dict dup begin put
  8405. % initialization
  8406. /initialize                % - initialize -
  8407. {
  8408. % 47 vars, but leave slack of 10 entries for custom Postscript fragments
  8409. userdict /Adobe_IllustratorA_AI3_vars 57 dict dup begin put
  8410. % paint operands
  8411. /_lp /none def
  8412. /_pf {} def
  8413. /_ps {} def
  8414. /_psf {} def
  8415. /_pss {} def
  8416. /_pjsf {} def
  8417. /_pjss {} def
  8418. /_pola 0 def
  8419. /_doClip 0 def
  8420. % paint operators
  8421. /cf    currentflat def    % - cf flatness
  8422. % typography operands
  8423. /_tm matrix def
  8424. /_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def 
  8425. /_renderEnd [null null null null /i1 /i1 /i1 /i1] def
  8426. /_render -1 def
  8427. /_rise 0 def
  8428. /_ax 0 def            % x character spacing    (_ax, _ay, _cx, _cy follows awidthshow naming convention)
  8429. /_ay 0 def            % y character spacing
  8430. /_cx 0 def            % x word spacing
  8431. /_cy 0 def            % y word spacing
  8432. /_leading [0 0] def
  8433. /_ctm matrix def
  8434. /_mtx matrix def
  8435. /_sp 16#020 def
  8436. /_hyphen (-) def
  8437. /_fScl 0 def
  8438. /_cnt 0 def
  8439. /_hs 1 def
  8440. /_nativeEncoding 0 def
  8441. /_useNativeEncoding 0 def
  8442. /_tempEncode 0 def
  8443. /_pntr 0 def
  8444. /_tDict 2 dict def
  8445. % typography operators
  8446. /Tx {} def
  8447. /Tj {} def
  8448. % compound path operators
  8449. /CRender {} def
  8450. % printing
  8451. /_AI3_savepage {} def
  8452. % color operands
  8453. /_gf null def
  8454. /_cf 4 array def
  8455. /_if null def
  8456. /_of false def
  8457. /_fc {} def
  8458. /_gs null def
  8459. /_cs 4 array def
  8460. /_is null def
  8461. /_os false def
  8462. /_sc {} def
  8463. /_i null def
  8464. Adobe_IllustratorA_AI3 begin
  8465. Adobe_IllustratorA_AI3
  8466.     {
  8467.     dup xcheck
  8468.         {
  8469.         bind
  8470.         } if
  8471.     pop pop
  8472.     } forall
  8473. end
  8474. end
  8475. Adobe_IllustratorA_AI3 begin
  8476. Adobe_IllustratorA_AI3_vars begin
  8477. newpath
  8478. } def
  8479. /terminate                % - terminate -
  8480. {
  8481. end
  8482. end
  8483. } def
  8484. % definition operators
  8485. /_                    % - _ null
  8486. null def
  8487. /ddef                % key value ddef -
  8488. {
  8489. Adobe_IllustratorA_AI3_vars 3 1 roll put
  8490. } def
  8491. /xput                % key value literal xput -
  8492. {
  8493. dup load dup length exch maxlength eq
  8494.     {
  8495.     dup dup load dup
  8496.     length 2 mul dict copy def
  8497.     } if
  8498. load begin def end
  8499. } def
  8500. /npop                % integer npop -
  8501. {
  8502.     {
  8503.     pop
  8504.     } repeat
  8505. } def
  8506. % marking operators
  8507. /sw                    % ax ay string sw x y 
  8508. {
  8509. dup length exch stringwidth
  8510. exch 5 -1 roll 3 index 1 sub mul add
  8511. 4 1 roll 3 1 roll 1 sub mul add
  8512. } def
  8513. /swj                % cx cy fillchar ax ay string swj x y
  8514. {
  8515. dup 4 1 roll
  8516. dup length exch stringwidth 
  8517. exch 5 -1 roll 3 index 1 sub mul add
  8518. 4 1 roll 3 1 roll 1 sub mul add 
  8519. 6 2 roll /_cnt 0 ddef
  8520. {1 index eq {/_cnt _cnt 1 add ddef} if} forall pop
  8521. exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop
  8522. } def
  8523. /ss                    % ax ay string matrix ss -
  8524. {
  8525. 4 1 roll
  8526.     {                % matrix ax ay char 0 0 {proc} -
  8527.     2 npop 
  8528.     (0) exch 2 copy 0 exch put pop
  8529.     gsave
  8530.     false charpath currentpoint
  8531.     4 index setmatrix
  8532.     stroke
  8533.     grestore
  8534.     moveto
  8535.     2 copy rmoveto
  8536.     } exch cshow
  8537. 3 npop
  8538. } def
  8539. /jss                % cx cy fillchar ax ay string matrix jss -
  8540. {
  8541. 4 1 roll
  8542.     {                % cx cy fillchar matrix ax ay char 0 0 {proc} -   
  8543.     2 npop 
  8544.     (0) exch 2 copy 0 exch put 
  8545.     gsave
  8546.     _sp eq 
  8547.         {
  8548.         exch 6 index 6 index 6 index 5 -1 roll widthshow  
  8549.         currentpoint
  8550.         }
  8551.         {
  8552.         false charpath currentpoint
  8553.         4 index setmatrix stroke
  8554.         }ifelse
  8555.     grestore
  8556.     moveto
  8557.     2 copy rmoveto
  8558.     } exch cshow
  8559. 6 npop
  8560. } def
  8561. % path operators
  8562. /sp                    % ax ay string sp -
  8563. {
  8564.     {
  8565.     2 npop (0) exch
  8566.     2 copy 0 exch put pop
  8567.     false charpath
  8568.     2 copy rmoveto
  8569.     } exch cshow
  8570. 2 npop
  8571. } def
  8572. /jsp                    % cx cy fillchar ax ay string jsp -
  8573. {
  8574.     {                    % cx cy fillchar ax ay char 0 0 {proc} -
  8575.     2 npop 
  8576.     (0) exch 2 copy 0 exch put 
  8577.     _sp eq 
  8578.         {
  8579.         exch 5 index 5 index 5 index 5 -1 roll wid°¿ thshow  
  8580.         }
  8581.         {
  8582.         false charpath
  8583.         }ifelse
  8584.     2 copy rmoveto
  8585.     } exch cshow
  8586. 5 npop
  8587. } def
  8588. % path construction operators
  8589. /pl                % x y pl x y
  8590. {
  8591. transform
  8592. 0.25 sub round 0.25 add exch
  8593. 0.25 sub round 0.25 add exch
  8594. itransform
  8595. } def
  8596. /setstrokeadjust where
  8597.     {
  8598.     pop true setstrokeadjust
  8599.     /c                % x1 y1 x2 y2 x3 y3 c -
  8600.     {
  8601.     curveto
  8602.     } def
  8603.     /C
  8604.     /c load def
  8605.     /v                % x2 y2 x3 y3 v -
  8606.     {
  8607.     currentpoint 6 2 roll curveto
  8608.     } def
  8609.     /V
  8610.     /v load def
  8611.     /y                % x1 y1 x2 y2 y -
  8612.     {
  8613.     2 copy curveto
  8614.     } def
  8615.     /Y
  8616.     /y load def
  8617.     /l                % x y l -
  8618.     {
  8619.     lineto
  8620.     } def
  8621.     /L
  8622.     /l load def
  8623.     /m                % x y m -
  8624.     {
  8625.     moveto
  8626.     } def
  8627.     }
  8628.     {%else
  8629.     /c
  8630.     {
  8631.     pl curveto
  8632.     } def
  8633.     /C
  8634.     /c load def
  8635.     /v
  8636.     {
  8637.     currentpoint 6 2 roll pl curveto
  8638.     } def
  8639.     /V
  8640.     /v load def
  8641.     /y
  8642.     {
  8643.     pl 2 copy curveto
  8644.     } def
  8645.     /Y
  8646.     /y load def
  8647.     /l
  8648.     {
  8649.     pl lineto
  8650.     } def
  8651.     /L
  8652.     /l load def
  8653.     /m
  8654.     {
  8655.     pl moveto
  8656.     } def
  8657.     }ifelse
  8658. % graphic state operators
  8659. /d                    % array phase d -
  8660. {
  8661. setdash
  8662. } def
  8663. /cf    {} def            % - cf flatness
  8664. /i                    % flatness i -
  8665. {
  8666. dup 0 eq
  8667.     {
  8668.     pop cf
  8669.     } if
  8670. setflat
  8671. } def
  8672. /j                    % linejoin j -
  8673. {
  8674. setlinejoin
  8675. } def
  8676. /J                    % linecap J -
  8677. {
  8678. setlinecap
  8679. } def
  8680. /M                    % miterlimit M -
  8681. {
  8682. setmiterlimit
  8683. } def
  8684. /w                    % linewidth w -
  8685. {
  8686. setlinewidth
  8687. } def
  8688. % path painting operators
  8689. /H                    % - H -
  8690. {} def
  8691. /h                    % - h -
  8692. {
  8693. closepath
  8694. } def
  8695. /N                    % - N -
  8696. {
  8697. _pola 0 eq 
  8698.     {
  8699.     _doClip 1 eq {clip /_doClip 0 ddef} if 
  8700.     newpath
  8701.     } 
  8702.     {
  8703.     /CRender {N} ddef
  8704.     }ifelse
  8705. } def
  8706. /n                    % - n -
  8707. {N} def
  8708. /F                    % - F -
  8709. {
  8710. _pola 0 eq 
  8711.     {
  8712.     _doClip 1 eq 
  8713.         {
  8714.         gsave _pf grestore clip newpath /_lp /none ddef _fc 
  8715.         /_doClip 0 ddef
  8716.         }
  8717.         {
  8718.         _pf
  8719.         }ifelse
  8720.     } 
  8721.     {
  8722.     /CRender {F} ddef
  8723.     }ifelse
  8724. } def
  8725. /f                    % - f -
  8726. {
  8727. closepath
  8728. F
  8729. } def
  8730. /S                    % - S -
  8731. {
  8732. _pola 0 eq 
  8733.     {
  8734.     _doClip 1 eq 
  8735.         {
  8736.         gsave _ps grestore clip newpath /_lp /none ddef _sc 
  8737.         /_doClip 0 ddef
  8738.         }
  8739.         {
  8740.         _ps
  8741.         }ifelse
  8742.     } 
  8743.     {
  8744.     /CRender {S} ddef
  8745.     }ifelse
  8746. } def
  8747. /s                    % - s -
  8748. {
  8749. closepath
  8750. S
  8751. } def
  8752. /B                    % - B -
  8753. {
  8754. _pola 0 eq 
  8755.     {
  8756.     _doClip 1 eq     % F clears _doClip
  8757.     gsave F grestore 
  8758.         {
  8759.         gsave S grestore clip newpath /_lp /none ddef _sc
  8760.         /_doClip 0 ddef
  8761.         } 
  8762.         {
  8763.         S
  8764.         }ifelse
  8765.     }
  8766.     {
  8767.     /CRender {B} ddef
  8768.     }ifelse
  8769. } def
  8770. /b                    % - b -
  8771. {
  8772. closepath
  8773. B
  8774. } def
  8775. /W                    % - W -
  8776. {
  8777. /_doClip 1 ddef
  8778. } def
  8779. /*                    % - [string] * -
  8780. {
  8781. count 0 ne 
  8782.     {
  8783.     dup type (stringtype) eq {pop} if
  8784.     } if 
  8785. _pola 0 eq {newpath} if
  8786. } def
  8787. % group operators
  8788. /u                    % - u -
  8789. {} def
  8790. /U                    % - U -
  8791. {} def
  8792. /q                    % - q -
  8793. {
  8794. _pola 0 eq {gsave} if
  8795. } def
  8796. /Q                    % - Q -
  8797. {
  8798. _pola 0 eq {grestore} if
  8799. } def
  8800. /*u                    % - *u -
  8801. {
  8802. _pola 1 add /_pola exch ddef
  8803. } def
  8804. /*U                    % - *U -
  8805. {
  8806. _pola 1 sub /_pola exch ddef 
  8807. _pola 0 eq {CRender} if
  8808. } def
  8809. /D                    % polarized D -
  8810. {pop} def
  8811. /*w                    % - *w -
  8812. {} def
  8813. /*W                    % - *W -
  8814. {} def
  8815. % place operators
  8816. /`                    % matrix llx lly urx ury string ` -
  8817. {
  8818. /_i save ddef
  8819. 6 1 roll 4 npop
  8820. concat pop
  8821. userdict begin
  8822. /showpage {} def
  8823. 0 setgray
  8824. 0 setlinecap
  8825. 1 setlinewidth
  8826. 0 setlinejoin
  8827. 10 setmiterlimit
  8828. [] 0 setdash
  8829. newpath
  8830. 0 setgray
  8831. false setoverprint
  8832. } def
  8833. /~                    % - ~ -
  8834. {
  8835. end
  8836. _i restore
  8837. } def
  8838. % color operators
  8839. /O                    % flag O -
  8840. {
  8841. 0 ne
  8842. /_of exch ddef
  8843. /_lp /none ddef
  8844. } def
  8845. /R                    % flag R -
  8846. {
  8847. 0 ne
  8848. /_os exch ddef
  8849. /_lp /none ddef
  8850. } def
  8851. /g                    % gray g -
  8852. {
  8853. /_gf exch ddef
  8854. /_fc
  8855. _lp /fill ne
  8856.     {
  8857.     _of setoverprint
  8858.     _gf setgray
  8859.     /_lp /fill ddef
  8860.     } if
  8861. } ddef
  8862. /_pf
  8863. {
  8864. _fc
  8865. fill
  8866. } ddef
  8867. /_psf
  8868. {
  8869. _fc
  8870. ashow
  8871. } ddef
  8872. /_pjsf
  8873. {
  8874. _fc
  8875. awidthshow
  8876. } ddef
  8877. /_lp /none ddef
  8878. } def
  8879. /G                    % gray G -
  8880. {
  8881. /_gs exch ddef
  8882. /_sc
  8883. {
  8884. _lp /stroke ne
  8885.     {
  8886.     _os setoverprint
  8887.     _gs setgray
  8888.     /_lp /stroke ddef
  8889.     } if
  8890. } ddef
  8891. /_ps
  8892. {
  8893. _sc
  8894. stroke
  8895. } ddef
  8896. /_pss
  8897. {
  8898. _sc
  8899. ss
  8900. } ddef
  8901. /_pjss
  8902. {
  8903. _sc
  8904. jss
  8905. } ddef
  8906. /_lp /none ddef
  8907. } def
  8908. /k                    % cyan magenta yellow black k -
  8909. {
  8910. _cf astore pop
  8911. /_fc
  8912. {
  8913. _lp /fill ne
  8914.     {
  8915.     _of setoverprint
  8916.     _cf aload pop setcmykcolor
  8917.     /_lp /fill ddef
  8918.     } if
  8919. } ddef
  8920. /_pf
  8921. {
  8922. _fc
  8923. fill
  8924. } ddef
  8925. /_psf
  8926. {
  8927. _fc
  8928. ashow
  8929. } ddef
  8930. /_pjsf
  8931. {
  8932. _fc
  8933. awidthshow
  8934. } ddef
  8935. /_lp /none ddef
  8936. } def
  8937. /K                    % cyan magenta yellow black K -
  8938. {
  8939. _cs astore pop
  8940. /_sc
  8941. {
  8942. _lp /stroke ne
  8943.     {
  8944.     _os setoverprint
  8945.     _cs aload pop setcmykcolor
  8946.     /_lp /stroke ddef
  8947.     } if
  8948. } ddef
  8949. /_ps
  8950. {
  8951. _sc
  8952. stroke
  8953. } ddef
  8954. /_pss
  8955. {
  8956. _sc
  8957. ss
  8958. } ddef
  8959. /_pjss
  8960. {
  8961. _sc
  8962. jss
  8963. } ddef
  8964. /_lp /none ddef
  8965. } def
  8966. /x                    % cyan magenta yellow black name gray x -
  8967. {
  8968. /_gf exch ddef
  8969. findcmykcustomcolor
  8970. /_if exch ddef
  8971. /_fc
  8972. _lp /fill ne
  8973.     {
  8974.     _of setoverprint
  8975.     _if _gf 1 exch sub setcustomcolor
  8976.     /_lp /fill ddef
  8977.     } if
  8978. } ddef
  8979. /_pf
  8980. {
  8981. _fc
  8982. fill
  8983. } ddef
  8984. /_psf
  8985. {
  8986. _fc
  8987. ashow
  8988. } ddef
  8989. /_pjsf
  8990. {
  8991. _fc
  8992. awidthshow
  8993. } ddef
  8994. /_lp /none ddef
  8995. } def
  8996. /X                    % cyan magenta yellow black name gray X -
  8997. {
  8998. /_gs exch ddef
  8999. findcmykcustomcolor
  9000. /_is exch ddef
  9001. /_sc
  9002. {
  9003. _lp /stroke ne
  9004.     {
  9005.     _os setoverprint
  9006.     _is _gs 1 exch sub setcustomcolor
  9007.     /_lp /stroke ddef
  9008.     } if
  9009. } ddef
  9010. /_ps
  9011. {
  9012. _sc
  9013. stroke
  9014. } ddef
  9015. /_pss
  9016. {
  9017. _sc
  9018. ss
  9019. } ddef
  9020. /_pjss
  9021. {
  9022. _sc
  9023. jss
  9024. } ddef
  9025. /_lp /none ddef
  9026. } def
  9027. % locked object operator
  9028. /A                    % value A -
  9029. {
  9030. pop
  9031. } def
  9032. currentdict readonly pop end
  9033. setpacking
  9034. % annotate page operator
  9035. /annotatepage
  9036. {
  9037. } def
  9038. %%EndResource
  9039. %%EndProlog
  9040. %%BeginSetup
  9041. %%IncludeFont: Helvetica
  9042. %%IncludeFont: Helvetica-Bold
  9043. Adobe_cmykcolor /initialize get exec
  9044. Adobe_cshow /initialize get exec
  9045. Adobe_customcolor /initialize get exec
  9046. Adobe_typography_AI3 /initialize get exec
  9047. Adobe_IllustratorA_AI3 /initialize get exec
  9048. [
  9049. 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis
  9050. /Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute
  9051. /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde
  9052. /oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex
  9053. /udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
  9054. /registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
  9055. /.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
  9056. /.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
  9057. /questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef
  9058. /guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe
  9059. /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide
  9060. /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright
  9061. /fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
  9062. /Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex
  9063. /Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex
  9064. /Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla
  9065. /hungarumlaut/ogonek/caron
  9066. TE
  9067. %AI3_BeginEncoding: _Helvetica Helvetica
  9068. [/_Helvetica/Helvetica 0 0 1 TZ
  9069. %AI3_EndEncoding TrueType
  9070. %AI3_BeginEncoding: _Helvetica-Bold Helvetica-Bold
  9071. [/_Helvetica-Bold/Helvetica-Bold 0 0 1 TZ
  9072. %AI3_EndEncoding TrueType
  9073. %%EndSetup
  9074. 0 A
  9075. u
  9076. 0 O
  9077. 0 g
  9078. 0 i 0 J 0 j 1 w 4 M []0 d
  9079. %AI3_Note:
  9080. 0 D
  9081. 50.75 17.75 m
  9082. 50.75 44.75 L
  9083. -21.25 44.75 L
  9084. -21.25 17.75 L
  9085. 50.75 17.75 L
  9086. f
  9087. U
  9088. u
  9089. 50.75 -18.25 m
  9090. 50.75 8.75 L
  9091. -21.25 8.75 L
  9092. -21.25 -18.25 L
  9093. 50.75 -18.25 L
  9094. f
  9095. U
  9096. u
  9097. 50.75 -67.75 m
  9098. 50.75 -40.75 L
  9099. -21.25 -40.75 L
  9100. -21.25 -67.75 L
  9101. 50.75 -67.75 L
  9102. f
  9103. U
  9104. u
  9105. u
  9106. 49.75 104.375 m
  9107. 49.75 181.7625 L
  9108. -22.25 181.7625 L
  9109. -22.25 104.375 L
  9110. 49.75 104.375 L
  9111. f
  9112. U
  9113. u
  9114. 0 0.1 0 0 k
  9115. 0 R
  9116. 0 G
  9117. 0.75 w
  9118. 47.5 106.625 m
  9119. 47.5 184.0125 L
  9120. -24.5 184.0125 L
  9121. -24.5 106.625 L
  9122. 47.5 106.625 L
  9123. b
  9124. U
  9125. U
  9126. u
  9127. 1 R
  9128. 48.5 20 m
  9129. 48.5 47 L
  9130. -23.5 47 L
  9131. -23.5 20 L
  9132. 48.5 20 L
  9133. b
  9134. U
  9135. u
  9136. 48.5 -16 m
  9137. 48.5 11 L
  9138. -23.5 11 L
  9139. -23.5 -16 L
  9140. 48.5 -16 L
  9141. b
  9142. U
  9143. u
  9144. 48.5 -65.5 m
  9145. 48.5 -38.5 L
  9146. -23.5 -38.5 L
  9147. -23.5 -65.5 L
  9148. 48.5 -65.5 L
  9149. b
  9150. U
  9151. u
  9152. u
  9153. 1 g
  9154. 0 R
  9155. 1 w
  9156. -41.6251 240.0595 m
  9157. -38.6253 240.0984 -23.2874 240.0595 y
  9158. -20.8311 240.3782 -20.8311 237.1532 v
  9159. -20.8311 233.9282 -20.8311 230.1969 y
  9160. -19.7718 231.2563 l
  9161. -18.6374 232.7469 -18.7874 229.8969 v
  9162. -18.7874 221.7968 l
  9163. -18.9374 220.5218 -19.8374 221.4968 v
  9164. -20.8124 222.3968 l
  9165. -20.8124 215.8717 l
  9166. -20.6624 213.0217 -23.2124 213.0217 v
  9167. -25.7624 213.0217 -41.5876 213.0217 y
  9168. -44.0626 212.2717 -44.0626 215.7967 v
  9169. -44.0626 219.9218 -44.0626 220.9718 y
  9170. -43.1626 220.4468 l
  9171. -41.5876 219.3218 -41.6626 221.6468 v
  9172. -41.7472 224.2705 -41.6626 231.2469 y
  9173. -41.7376 233.0469 -42.9376 232.1469 v
  9174. -44.1376 231.2469 -44.0626 231.3219 y
  9175. -44.0626 237.1719 l
  9176. -44.5126 240.022 -41.6251 240.0595 v
  9177. b
  9178. U
  9179. U
  9180. u
  9181. 0 To
  9182. 1 0 0 1 -29.2314 247.9482 0 Tp
  9183. TP
  9184. -20.6719 0 Td
  9185. 0 Tr
  9186. 0 g
  9187. /_Helvetica 8 Tf
  9188. 0 Ts
  9189. 100 Tz
  9190. 0 Tt
  9191. 0 TA
  9192. 0 0 5 TC
  9193. 100 100 200 TW
  9194. 0 0 0 Ti
  9195. 1 Ta
  9196. 0 Tq
  9197. 9 0 Tl
  9198. 0 Tc
  9199. 0 Tw
  9200. (Component) Tx
  9201. (\r) TX 
  9202. 20.6719 -9 Td
  9203. (\r) TX 
  9204. TO
  9205. U
  9206. u
  9207. u
  9208. -129.25 104.5125 m
  9209. -129.25 181.55 L
  9210. -201.25 181.55 L
  9211. -201.25 104.5125 L
  9212. -129.25 104.5125 L
  9213. f
  9214. U
  9215. u
  9216. 0 0.1 0 0 k
  9217. 1 R
  9218. 0 G
  9219. 0.75 w
  9220. -131.5 106.7625 m
  9221. -131.5 183°¿Î.8 L
  9222. -203.5 183.8 L
  9223. -203.5 106.7625 L
  9224. -131.5 106.7625 L
  9225. b
  9226. U
  9227. u
  9228. 1 g
  9229. 1 w
  9230. -153.5779 141.0595 m
  9231. -153.5389 138.0597 -153.5779 122.7218 y
  9232. -153.2591 120.2656 -156.4841 120.2656 v
  9233. -159.7092 120.2656 -163.4405 120.2656 y
  9234. -162.381 119.2062 l
  9235. -160.8904 118.0718 -163.7405 118.2218 v
  9236. -171.8405 118.2218 l
  9237. -173.1156 118.3718 -172.1405 119.2718 v
  9238. -171.2405 120.2468 l
  9239. -177.7656 120.2468 l
  9240. -180.6156 120.0968 -180.6156 122.6468 v
  9241. -180.6156 125.1968 -180.6156 141.022 y
  9242. -181.3656 143.497 -177.8406 143.497 v
  9243. -173.7156 143.497 -172.6656 143.497 y
  9244. -173.1905 142.597 l
  9245. -174.3156 141.022 -171.9905 141.097 v
  9246. -169.3668 141.1816 -162.3904 141.097 y
  9247. -160.5904 141.172 -161.4904 142.372 v
  9248. -162.3904 143.572 -162.3154 143.497 y
  9249. -156.4654 143.497 l
  9250. -153.6154 143.947 -153.5779 141.0595 v
  9251. b
  9252. 0 g
  9253. -173.5374 137.0845 m
  9254. -175.4874 133.1844 l
  9255. -175.4874 128.9844 l
  9256. -173.3874 124.6343 l
  9257. -169.5624 122.3843 l
  9258. -165.8873 122.0843 l
  9259. -162.8873 123.8843 l
  9260. -161.5373 122.5343 l
  9261. -158.0873 122.5343 l
  9262. -157.7873 125.0843 l
  9263. -159.7373 127.1844 l
  9264. -158.6873 129.5844 l
  9265. -158.9123 132.8094 l
  9266. -160.7873 135.7345 l
  9267. -163.3373 137.9845 l
  9268. -166.1873 139.1845 l
  9269. -169.9374 139.1845 l
  9270. -173.5374 137.0845 l
  9271. f
  9272. 1 g
  9273. -168.7374 135.8845 m
  9274. -171.7374 133.9344 l
  9275. -172.2624 130.4844 l
  9276. -170.9874 127.1844 l
  9277. -167.3874 125.1594 l
  9278. -163.6373 126.8844 l
  9279. -161.9123 130.3344 l
  9280. -162.8123 134.0094 l
  9281. -165.4373 135.5844 l
  9282. -168.7374 135.8845 l
  9283. f
  9284. 0 g
  9285. -169.0374 130.7844 m
  9286. -168.8874 128.2344 -166.0373 129.7344 v
  9287. -160.9373 135.1345 l
  9288. -160.4123 138.8845 -162.9623 137.4595 v
  9289. -163.0373 136.4845 -161.9873 135.5844 v
  9290. -163.0373 134.3844 l
  9291. -164.3873 135.4345 l
  9292. -167.3874 132.2844 l
  9293. -165.8873 131.3844 -166.9373 130.4844 v
  9294. -167.0874 129.6594 -169.0374 130.7844 v
  9295. f
  9296. 1 g
  9297. -163.1873 137.6845 m
  9298. -163.7123 135.8095 -164.3873 135.4345 v
  9299. -163.0373 134.3844 l
  9300. -161.9873 135.5844 l
  9301. -163.1873 136.4095 -162.9623 137.4595 v
  9302. -162.7373 138.5095 -163.1873 137.6845 y
  9303. f
  9304. U
  9305. u
  9306. 0 To
  9307. 1 0 0 1 -167.2314 163.9482 0 Tp
  9308. TP
  9309. -20.6719 0 Td
  9310. 0 Tr
  9311. 1 O
  9312. 0 g
  9313. (Component) Tx
  9314. (\r) TX 
  9315. 4.8916 -9 Td
  9316. (Manager) Tx 
  9317. (\r) TX 
  9318. TO
  9319. U
  9320. U
  9321. u
  9322. 0 O
  9323. -273.25 104.5125 m
  9324. -273.25 181.55 L
  9325. -345.25 181.55 L
  9326. -345.25 104.5125 L
  9327. -273.25 104.5125 L
  9328. f
  9329. 0 0.1 0 0 k
  9330. 1 R
  9331. 0 G
  9332. 0.75 w
  9333. -275.5 106.7625 m
  9334. -275.5 183.8 L
  9335. -347.5 183.8 L
  9336. -347.5 106.7625 L
  9337. -275.5 106.7625 L
  9338. b
  9339. 0 To
  9340. 1 0 0 1 -312.7314 163.9482 0 Tp
  9341. TP
  9342. -19.5605 0 Td
  9343. 0 Tr
  9344. 1 O
  9345. 0 g
  9346. 1 w
  9347. 8 0 Tl
  9348. (Application) Tx 
  9349. (\r) TX 
  9350. TO
  9351. 0 O
  9352. 1 g
  9353. 1 R
  9354. 0 G
  9355. 2 j
  9356. -312.8125 146.9812 m
  9357. -297.3125 131.4812 l
  9358. -312.5 116.2937 l
  9359. -328.5625 132.3562 l
  9360. -312.8125 146.9812 l
  9361. b
  9362. -313.1875 130.2312 m
  9363. -311.625 131.9187 l
  9364. -310.625 133.1687 -309.5 133.0437 v
  9365. -308.375 132.9187 -305.6875 132.9812 y
  9366. -300.5 127.8562 l
  9367. -300.0625 121.7312 l
  9368. -303.125 123.5437 l
  9369. -307.3125 123.6062 l
  9370. -309.4132 123.8753 -310.375 124.3562 v
  9371. -311.625 124.9812 -313.1875 126.4187 y
  9372. -313.7634 127.3745 -314 128.7937 v
  9373. -314.0625 129.1687 -312.9375 129.2312 -312.375 128.6687 c
  9374. -312.0563 128.35 -310.8125 126.6687 y
  9375. -309.25 126.7312 l
  9376. -307.8125 127.9812 l
  9377. -308.3125 129.1062 l
  9378. -309.6875 131.2312 -310.9375 129.8562 v
  9379. -311.8776 128.8221 -313.4375 129.4812 -313.1875 130.2312 c
  9380. b
  9381. 1 O
  9382. 0 g
  9383. 0 j
  9384. -300.5 128.5437 m
  9385. -297.5625 128.2312 l
  9386. -297.5625 120.4812 l
  9387. -299.8125 120.4812 l
  9388. -302.1875 122.9812 l
  9389. -299.625 120.6062 -300.5 128.5437 v
  9390. f
  9391. -304.0625 128.6062 m
  9392. -304.0625 127.5437 l
  9393. -311.3125 127.5437 l
  9394. -312.375 128.6687 l
  9395. -304.0625 128.6062 l
  9396. f
  9397. -314 128.7937 m
  9398. -316.9375 128.7937 l
  9399. -317.375 127.6062 -316.5 127.6062 v
  9400. -315.625 127.6062 -313.75 127.6062 y
  9401. -314 128.7937 l
  9402. f
  9403. 0 O
  9404. 1 g
  9405. 0 R
  9406. 0 G
  9407. 0.5 w
  9408. -311.5 143.2 m
  9409. B
  9410. U
  9411. 0 To
  9412. 1 0 0 1 -265.5 234.0107 0 Tp
  9413. TP
  9414. 0 Tr
  9415. 0 g
  9416. 1 w
  9417. 0 Ta
  9418. 9 0 Tl
  9419. (Application calls) Tx
  9420. (\r) TX 
  9421. T*
  9422. (component function.) Tx 
  9423. (\r) TX 
  9424. TO
  9425. 0 To
  9426. 1 0 0 1 -170.4521 233.9482 0 Tp
  9427. TP
  9428. 0 Tr
  9429. (Component Manager sends ) Tx
  9430. (\r) TX 
  9431. T*
  9432. (request code corresponding ) Tx
  9433. (\r) TX 
  9434. T*
  9435. (to desired component ) Tx
  9436. (\r) TX 
  9437. T*
  9438. (function along with function ) Tx
  9439. (\r) TX 
  9440. T*
  9441. (parameters.  ) Tx 
  9442. (\r) TX 
  9443. TO
  9444. 0 To
  9445. 1 0 0 1 8.9561 233.9482 0 Tp
  9446. TP
  9447. 0 Tr
  9448. (Dispatcher decodes ) Tx
  9449. (\r) TX 
  9450. T*
  9451. (request code and ) Tx
  9452. (\r) TX 
  9453. T*
  9454. (calls appropriate ) Tx
  9455. (\r) TX 
  9456. T*
  9457. (component function) Tx
  9458. (\r) TX 
  9459. T*
  9460. (with parameters.) Tx 
  9461. (\r) TX 
  9462. TO
  9463. u
  9464. u
  9465. 0 R
  9466. 0 G
  9467. 0.75 w
  9468. -269.0389 149.5076 m
  9469. -212.7359 149.5076 l
  9470. S
  9471. U
  9472. 0 O
  9473. 0 g
  9474. 1 w
  9475. -214.3875 152.1031 m
  9476. -208.6124 149.5219 l
  9477. -214.3875 146.8969 l
  9478. -212.6375 149.4781 l
  9479. -214.3875 152.1031 l
  9480. f
  9481. U
  9482. 0 To
  9483. 1 0 0 1 -179.5664 41.9482 0 Tp
  9484. TP
  9485. 0 Tr
  9486. (Function result is returned) Tx
  9487. (\r) TX 
  9488. T*
  9489. (to dispatcher, then to) Tx
  9490. (\r) TX 
  9491. T*
  9492. (Component Manager,) Tx
  9493. (\r) TX 
  9494. T*
  9495. (and finally to application.) Tx 
  9496. (\r) TX 
  9497. TO
  9498. 0 R
  9499. 0 G
  9500. 85 -84 m
  9501. 85 265 L
  9502. -59 265 L
  9503. -59 -84 L
  9504. 85 -84 L
  9505. s
  9506. 1 To
  9507. 1 0 0 1 -50 75.3 0 Tp
  9508. 76 -75 m
  9509. 76 75.3 L
  9510. -50 75.3 L
  9511. -50 -75 L
  9512. 76 -75 L
  9513. s
  9514. TP
  9515. 0 -6.75 Td
  9516. 1 Tr
  9517. (\r) TX 
  9518. TO
  9519. u
  9520. 0 To
  9521. 1 0 0 1 12.2686 163.9482 0 Tp
  9522. TP
  9523. -20.6719 0 Td
  9524. 0 Tr
  9525. 1 O
  9526. 0 g
  9527. 1 Ta
  9528. (Component) Tx
  9529. (\r) TX 
  9530. 2.2236 -9 Td
  9531. (dispatcher) Tx 
  9532. (\r) TX 
  9533. TO
  9534. U
  9535. 0 To
  9536. 1 0 0 1 -41.5 63 0 Tp
  9537. TP
  9538. 0 Tr
  9539. 0 O
  9540. 0 Ta
  9541. (Component) Tx
  9542. (\r) TX 
  9543. T*
  9544. (functions) Tx 
  9545. (\r) TX 
  9546. TO
  9547. 0 To
  9548. 1 0 0 1 12.5176 30.4482 0 Tp
  9549. TP
  9550. -18.6719 0 Td
  9551. 0 Tr
  9552. 1 O
  9553. 1 Ta
  9554. (Function 1) Tx
  9555. (\r) TX 
  9556. 18.6719 -9 Td
  9557. (\r) TX 
  9558. T*
  9559. (\r) TX 
  9560. T*
  9561. (\r) TX 
  9562. -18.6719 -9 Td
  9563. (Function 2) Tx
  9564. (\r) TX 
  9565. 18.6719 -9 Td
  9566. (\r) TX 
  9567. -1.0496 -10 Td
  9568. /_Helvetica 6 Tf
  9569. 10 0 Tl
  9570. (\245) Tx 
  9571. 6 0 Tl
  9572. (\r) TX 
  9573. T*
  9574. (\245) Tx
  9575. (\r) TX 
  9576. T*
  9577. (\245) Tx
  9578. (\r) TX 
  9579. 1.0496 -9 Td
  9580. /_Helvetica 8 Tf
  9581. 9 0 Tl
  9582. (\r) TX 
  9583. -19.2718 -9 Td
  9584. (Function ) Tx 0 -150 Tk 
  9585. (n) Tx 
  9586. (\r) TX 
  9587. TO
  9588. 0 R
  9589. 0 G
  9590. 0.75 w
  9591. 57.7829 33.4289 m
  9592. 62.8713 33.4412 L
  9593. 65.2144 33.4412 67.114 35.3407 67.114 37.6838 C
  9594. 67.0551 136.25 L
  9595. 67.0551 138.5931 65.1556 140.4926 62.8125 140.4926 C
  9596. 53 140.5 l
  9597. S
  9598. 0 O
  9599. 0 g
  9600. 1 w
  9601. 59.5329 30.7547 m
  9602. 53.7578 33.3359 l
  9603. 59.5329 35.9609 l
  9604. 57.7829 33.3797 l
  9605. 59.5329 30.7547 l
  9606. f
  9607. u
  9608. 0 0.1 0 0 k
  9609. -260.2148 244.4745 m
  9610. -257.7155 244.4745 -255.6893 246.5007 -255.6893 249 c
  9611. -255.6893 251.4993 -257.7155 253.5255 -260.2148 253.5255 c
  9612. -262.7142 253.5255 -264.7403 251.4993 -264.7403 249 c
  9613. -264.7403 246.5007 -262.7142 244.4745 -260.2148 244.4745 c
  9614. f
  9615. 0 To
  9616. 0.8 0 0 0.8 -260.1562 246.5523 0 Tp
  9617. TP
  9618. -2.2236 0 Td
  9619. 0 Tr
  9620. 1 O
  9621. 0 g
  9622. /_Helvetica-Bold 8 Tf
  9623. 10 0 Tl
  9624. (1) Tx 
  9625. (\r) TX 
  9626. TO
  9627. U
  9628. u
  9629. 0 O
  9630. 0 0.1 0 0 k
  9631. -166.2148 244.9745 m
  9632. -163.7155 244.9745 -161.6893 247.0007 -161.6893 249.5 c
  9633. -161.6893 251.9993 -163.7155 254.0255 -166.2148 254.0255 c
  9634. -168.7142 254.0255 -170.7403 251.9993 -170.7403 249.5 c
  9635. -170.7403 247.0007 -168.7142 244.9745 -166.2148 244.9745 c
  9636. f
  9637. 0 To
  9638. 0.8 0 0 0.8 -166.1875 247.1086 0 Tp
  9639. TP
  9640. -2.2236 0 Td
  9641. 0 Tr
  9642. 1 O
  9643. 0 g
  9644. (2) Tx 
  9645. (\r) TX 
  9646. TO
  9647. U
  9648. u
  9649. 0 O
  9650. 0 0.1 0 0 k
  9651. 11.7852 244.9745 m
  9652. 14.2845 244.9745 16.3107 247.0007 16.3107 249.5 c
  9653. 16.3107 251.9993 14.2845 254.0255 11.7852 254.0255 c
  9654. 9.2858 254.0255 7.2597 251.9993 7.2597 249.5 c
  9655. 7.2597 247.0007 9.2858 244.9745 11.7852 244.9745 c
  9656. f
  9657. 0 To
  9658. 0.8 0 0 0.8 11.8125 247.1086 0 Tp
  9659. TP
  9660. -2.2236 0 Td
  9661. 0 Tr
  9662. 1 O
  9663. 0 g
  9664. (3) Tx 
  9665. (\r) TX 
  9666. TO
  9667. U
  9668. u
  9669. u
  9670. 0 O
  9671. 0 0.1 0 0 k
  9672. -175.7148 53.4745 m
  9673. -173.2155 53.4745 -171.1893 55.5007 -171.1893 58 c
  9674. -171.1893 60.4993 -173.2155 62.5255 -175.7148 62.5255 c
  9675. -178.2142 62.5255 -180.2403 60.4993 -180.2403 58 c
  9676. -180.2403 55.5007 -178.2142 53.4745 -175.7148 53.4745 c
  9677. f
  9678. 0 To
  9679. 0.8 0 0 0.8 -175.875 55.6086 0 Tp
  9680. TP
  9681. -2.2236 0 Td
  9682. 0 Tr
  9683. 1 O
  9684. 0 g
  9685. (4) Tx 
  9686. (\r) TX 
  9687. TO
  9688. U
  9689. U
  9690. u
  9691. u
  9692. 0 R
  9693. 0 G
  9694. 0.75 w
  9695. -124.7133 149.5076 m
  9696. -32.9102 149.5076 l
  9697. S
  9698. U
  9699. 0 O
  9700. 0 g
  9701. 1 w
  9702. -34.5619 152.1031 m
  9703. -28.7868 149.5219 l
  9704. -34.5619 146.8969 l
  9705. -32.8119 149.4781 l
  9706. -34.5619 152.1031 l
  9707. f
  9708. U
  9709. u
  9710. u
  9711. 0 R
  9712. 0 G
  9713. 0.75 w
  9714. -29.5367 141.4924 m
  9715. -121.3397 141.4924 l
  9716. S
  9717. U
  9718. 0 O
  9719. 0 g
  9720. 1 w
  9721. -119.6881 138.8969 m
  9722. -125.4632 141.4781 l
  9723. -119.6881 144.1031 l
  9724. -121.4381 141.5219 l
  9725. -119.6881 138.8969 l
  9726. f
  9727. U
  9728. u
  9729. u
  9730. 0 R
  9731. 0 G
  9732. 0.75 w
  9733. -208.2867 141.4924 m
  9734. -264.5897 141.4924 l
  9735. S
  9736. U
  9737. 0 O
  9738. 0 g
  9739. 1 w
  9740. -262.9381 138.8969 m
  9741. -268.7132 141.4781 l
  9742. -262.9381 144.1031 l
  9743. -264.6881 141.5219 l
  9744. -262.9381 138.8969 l
  9745. f
  9746. U
  9747. 0 R
  9748. 0 0.3 0 0 K
  9749. 0.4 w
  9750. -235 220 m
  9751. -235 155 l
  9752. S
  9753. -104.75 197.75 m
  9754. -104.75 154.25 l
  9755. S
  9756. 57.5 195.25 m
  9757. 57.5 144.75 l
  9758. S
  9759. -239 136 m
  9760. -182.25 63 l
  9761. S
  9762. 10 91 m
  9763. -167.25 59 l
  9764. S
  9765. -76 136 m
  9766. -168.75 63 l
  9767. S
  9768. u
  9769. u
  9770. 0 G
  9771. 0.75 w
  9772. 12.9924 46.7867 m
  9773. 12.9924 98.0898 l
  9774. S
  9775. U
  9776. 0 O
  9777. 0 g
  9778. 1 w
  9779. 10.3969 96.4381 m
  9780. 12.9781 102.2132 l
  9781. 15.6031 96.4381 l
  9782. 13.0219 98.1881 l
  9783. 10.3969 96.4381 l
  9784. f
  9785. U
  9786. %%PageTrailer
  9787. gsave annotatepage grestore showpage
  9788. %%Trailer
  9789. Adobe_IllustratorA_AI3 /terminate get exec
  9790. Adobe_typography_AI3 /terminate get exec
  9791. Adobe_customcolor /terminate get exec
  9792. Adobe_cshow /terminate get exec
  9793. Adobe_cmykcolor /terminate get exec
  9794. Adobe_packedarray /terminate get exec
  9795. %%EOF
  9796. —`◊#ˇ ˇˇˇˇ#◊ 
  9797. d,
  9798. Courier
  9799.     .°dONLNd%0h+6Ltypedef struct {°dONLNd1&<û+ ComponentDescription td;°dONLNd/1„<y)Ω /* Registration parameters */°dONLNdO=&Hb(dD ResourceSpec°dONLNd^=åHæ)f
  9800. component;°dONLNdk=„Hí)W# /* Resource where code is found */°dONLNdêI&Tb(pD ResourceSpec°dONLNdüIåT“)fcomponentName;°dONLNdÆI„Tj)W /* Name string resource */°dONLNdÀU&`b(|D ResourceSpec°dONLNd⁄Uå`“)fcomponentInfo;°dONLNdÈU„`j)W /* Info string resource */°dONLNda&lb(àD ResourceSpec°dONLNdaål“)fcomponentIcon;°dONLNd$a„lG)W /* Icon resource */°dONLNd9mx|(î6} ComponentResource;, Palatino
  9801. °dONLNdNÑêë*TFigure 4 shows the contents of the component resource that we’ll use for the example°dONLNd£êúJ*
  9802. component.
  9803. “65ë"“6°d
  9804. ONLNfH"5ë°d
  9805. ONLNfx^†Ç†é
  9806. 4—5“6ò,@[@[“6ë’’
  9807. Ò?˘ˇ‡Ô
  9808. Ò?˘ˇ‡Ô
  9809. Ò?˘ˇ¯Ô
  9810. Ò?˘ˇ¯Ô
  9811. Ò?˘ˇ¯Ô
  9812. Ò?˘ˇ¯Ô
  9813. Ò?˘ˇ¯Ôı?˘ˇ¯Ô˘Ã˚çΔÊHÊ?˘ˇ¯Ô˙    2™SI¢Eô?˘ˇ˚ˇ¯Ò˙    ™SO¢Eü?˘ˇ¯Ò˙    2™SH¢Eò?˘ˇ¯Ò˘Ã´çF¢BÊ?˘ˇ¯Ò¯˛Ä?˘ˇ¯Ò¯˛Ä?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò˘ˇ¯Ò Ò˘ˇ¯ÒÊÒÊÒÊÒÊÒÊÒÊÒ Ò?˘ˇ‡Ò Ò?˘ˇ‡Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò˜8!?˘ˇ¯Ò˚
  9814. 3|„s;F∏HÊ?˘ˇ¯Ò˚
  9815. L‘î‘©b§Eô?˘ˇ¯Ò˚
  9816. D‘î◊©§Eü?˘ˇ¯Ò˚
  9817. L‘î‘)F§Eò?˘ˇ¯Ò˚
  9818. 3T„S);∏BÊ?˘ˇ¯Ò˘Ä˝Ä?˘ˇ¯Ò˘Ä˝Ä?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò˘ˇ¯Ò Ò˘ˇ¯ÒÊÒÊÒÊÒÊÒÊÒÊÒ Ò?˘ˇ‡Ò Ò?˘ˇ‡Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò¯„@?˘ˇ¯Òò,@Ä[@Ä[6Rë#˝ æs9ù„gVfÈ≥?˘ˇ¯˝  P˝%˝ &jL™T„5R9iJ?˘ˇ¯ˇ¿7Œg3∞ÏçÆ÷p˛%˝ "jL´‘’’Rÿiz?˘ˇ¯MIïJë3)YP˛%˝ &jL™’ïRôiB?˘ˇ¯MIïzë>ë)YP˛%˝ ™s)î…urvy2?˘ˇ¯MIïBë0S)YP˛˚@¯?˘ˇ¯5Ne2êÏç.VP˛˚@¯?˘ˇ¯˝¸¸Ò?˘ˇ¯˝¸¸ Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò˘ˇ¯Ò Ò˘ˇ¯ÒÊÒÊÒÊÒÊÒÊÒÊÒ Ò?˘ˇ‡Ò Ò?˘ˇ‡Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Òı ‡?˘ˇ¯Ò˙    3Á7ö&r?˘ˇ¯Ò˙     §Õ&ä#î?˘ˇ¯Ò˙    J§Õ>ãÌí?˘ˇ¯Ò˙     §Õ"ä)ë?˘ˇ¯Ò˙    2ß5ä'r?˘ˇ¯Ò¯˝?˘ˇ¯Ò¯˝`?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò˘ˇ¯Ò Ò˘ˇ¯ÒÊÒÊÒÊÒÊÒÊÒÊÒ Ò?˘ˇ‡Ò Ò?˘ˇ‡Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò˜_0?˘ˇ¯Ò¸ üq∏‹—3¶6&?˘ˇ¯Ò¸ &UJi4QΔ3F?˘ˇ˚ˇ¯Ò¸ "UJiÙ_l•]&?˘ˇ¯Ô¸ &UJiQLïY?˘ˇ¯Ô¸ ïq®‘Q;§ó%?˘ˇ¯Ô˙@˝Ä˛?˘ˇ¯Ô˙@˛˝?˘ˇ¯Ô
  9819. Ò?˘ˇ¯Ô
  9820. Ò?˘ˇ¯Ô
  9821. Ò?˘ˇ¯Ôò,Ä¿[Ä¿[R6íë
  9822. Ò?˘ˇ¯Ô
  9823. Ò˘ˇ¯Ô
  9824. Ò˘ˇ¯Ô’’’’’’
  9825. Ò?˘ˇ‡Ô
  9826. Ò?˘ˇ‡Ô
  9827. Ò?˘ˇ¯Ô
  9828. Ò?˘ˇ¯Ô
  9829. Ò?˘ˇ¯Ô
  9830. Ò?˘ˇ¯Ô
  9831. Ò?˘ˇ¯Ô˘Ä ?˘ˇ¯Ô˛
  9832. õÁ3ôÿ”4xÃhÊ?˘ˇ¯Ô˛
  9833. f§ •H¢N%2%ô?˘ˇ¯Ô˛
  9834. &§ ΩHí@Â%ü?˜ˇÒ˛
  9835. f§ °HäLe%ò?˘ˇ¯Ò˛
  9836. öß2ôHí3∏Ã"Ê?˘ˇ¯Ò¸¸ Ä?˘ˇ¯Ò¸¸ Ä?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò˘ˇ¯Ò Ò˘ˇ¯ÒÊ˝ ˚Ê7Œg3∞ÃÏ3#+3ˇÊˇÄMIïJë32$ƒ™LÄÊMIïzë>'§™GÄÊMIïBë30$™LˇÊ5Ne2êÃÏ##:3ˇÒ?˘ˇ‡˝ˆÒ?˘ˇ‡˝ˆ Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò¯>?˘ˇ¯Ò˝ 7Œ73±¶hÒò1?˘ˇ¯Ò˝ ÕIMJëDúJd1?˘ˇ¯Ò˝ MIMzë$ÅÀ‡1?˜ˇÒ˝ ÕIMBëò $1?˘ˇ¯Ô˝ 5N52ë$gqò>?˘ˇ¯Ô˚¸@˛?˘ˇ¯Ô˚¸@˛?˘ˇ¯Ô
  9837. Ò?˘ˇ¯Ô
  9838. Ò?˘ˇ¯Ô
  9839. Ò?˘ˇ¯Ô
  9840. Ò?˘ˇ¯Ô
  9841. Ò˘ˇ¯Ô
  9842. Ò˘ˇ¯Ô’’’’’’
  9843. Ò?˘ˇ‡Ôò,¿fi[¿fi[í6∞ë
  9844. Ò?˘ˇ‡Ô
  9845. Ò?˘ˇ¯Ô
  9846. Ò?˘ˇ¯Ô
  9847. Ò?˘ˇ¯Ô
  9848. Ò?˘ˇ¯Ô
  9849. Ò?˘ˇ¯Ô¸à˛Ä ?˘ˇ¯Ô3|Êss…æ0”4xÃhÊ?˘ˇ¯ÔL‘ôT—®ÍH¢N%2%ô?˘ˇ¯ÔD‘ôW—´jxí@Â%ü?˘ˇ¯ÔL‘ôTQöj@äLe%ò?˘ˇ˚ˇ¯Ò3TÊSQâÍ0í3∏Ã"Ê?˘ˇ¯Ò˛Ä˙ Ä?˘ˇ¯Ò˛Ä˙ Ä?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò˘ˇ¯Ò Ò˘ˇ¯ÒÊÒÊ0˝8¸Ê |"oúŒgx¸Ê ¥ öì*ï ¸Ê ˇ¿Æ¥ öì*ı ¸Ê ¨¥"öì*Ö ¸Ò?˘ˇ
  9850. ‡K¥jú e ¸Ò?˘ˇ‡˙˘Ò?˘ˇ¯˙˘ Ò?˘ˇ¯ÒòÅ\@[HH‡µƒñIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  9851. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  9852. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  9853.  
  9854.  
  9855.  ˛êêê@[“6ë'ÅÅ•ÅÅ• Å∏ˇÅRÅJˇˇÅSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚUõ˚ˇÎGˇˇˇˇˇ˛ˇÅÚÅ¡ˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇ    ˇˇˇˇ˛˛ˇˇˇˆˇ˚ˇˇˇ¸ˇˇ˛ˇÅÚè¬#˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇ˛
  9856. ˇ˛ˇ˛ˇ˛˜Gˇˇˇˇˇˇˇˇ˛˛ˇÚˇÇ䬡˛ˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇ˛ˇˇ˛ˇˇˇ¸ˇ˜Gˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇ嬎ˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇˇÙGˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇã¡
  9857. ˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛˛˛ˇˇˇ˛ˇ˛˝ˇˇ˛ˇ˛ˇˆGˇˇˇˇˇ˛ˇˇ˛ˇ˛ˇÚˇÇ]≥ˇ‚ˇˇGˇ˛ˇÚˇÇ^≥ˇ„ˇˇˇGˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇ
  9858. Å∂ˇÚˇÇ Å˝∏ˇÚˇÇ Å˝∏ˇÚˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇ
  9859. Å∏ˇˇÇTÅJˇˇˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇc™ˇ˛ˇ¸ˇ˝¸ˇÎGˇˇˇ˛ˇÚˇÇïœˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇˇˇˇ˛ˇˇˇ˛ˇ˝ˇˇ˛˛ˇˇˇˆGˇˇˇ˛ˇÚˇÇù–)˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇˇˇ˛˛˛˛
  9860. ˛ˇˇˇˇˇ˜Gˇ˛ˇÚˇÇ󖡲ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˝˛ˇˇˇˇ˛ˇ˛ˇˇˇ¸ˇ˜Gˇ˛ˇÚˇÇô–ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇÙGˇ˛ˇÚˇÇòœ
  9861. ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇ˝ˇ˝ˇ˛ˇˇˇˆGˇ˛ˇÚˇÇ]¡ˇ‘ˇˇGˇ˛ˇÚˇÇ^¡ˇ’ˇˇˇGˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇ
  9862. Å∂ˇÚˇÇ Å˝∏ˇÚˇÇ Å˝∏ˇÚˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇ
  9863. Å∏ˇˇÇTÅJˇˇˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇdπ˛ˇ˛ˇˇÛˇ˜ˇÈGˇˇˇˇ˛ˇÚˇÇòÅ\@Ä[HH‡®|óIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  9864. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  9865. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  9866.  
  9867.  
  9868.  ˛êêê@Ä[6Rë'Ωfiˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˝ˇ˛ˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇ ˇˇˇˇˇˇˇ˜ˇˇˇˇ˛ˇ˛ˇ ˇˇ˛ˇÚˇÍ˛ˇ›ˇ˚ˇÚˇ˚ˇˇ·¸fl%ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇ˛ˇˇˇˆGˇ˛ˇˇˇˇˇ˛˛ˇÚÛˇ¯˛˛ ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛˝˛ˇˇˇˇ˛ˇˇ˛ˇˇ˛ˇ ˇˇ˛ˇˇˇˇ˛È˙flˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˝ˇ ˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˝ˇˇˆGˇˇˇˇˇˇˇˇˇ˛ˇÚˇÎˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇÈ¯flˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝.ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˆGˇˇˇˇˇˇˇˇ˛ˇÚˇÎˇ¸ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˛ˇ¸ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇÈ˚fiFˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇ˛ˇˇˇ˛ˇˇ˛ˇ˛˛ˇ    ˇˇˇˇˆˇ˛ˇ˛ˇ˛ˇ ˇ˛ˇÚˇÎˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛˝ˇˇˇ˛ˇˇˇ¸˛ˇˇˇˇˇˇ˛ˇˇˇ˛ˇÈ¶–ˇ±Gˇˇˇ˛ˇÚˇÍ˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˝˛ˇˇˇˇ˛ˇˇˇˇ˛ˇ ˇˇˇˇˇˇÈ_–ˇ±Gˇˇˇ˛ˇÚˇ⁄ˇ“ˇ⁄]ÅIˇ˛ˇÚˇ⁄ˇ“ˇ⁄UÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇ
  9869. Å∂ˇÚˇÇ Å˝∏ˇÚˇÇ Å˝∏ˇÚˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇ
  9870. Å∏ˇˇÇTÅJˇˇˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇZùˇ¸ˇÍGˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇã√ˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇ˛ˇˇˇ˛ˇˇˆˇ˝ˇ3ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇéƒ#˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇ˛ˇ˛˛ˇˇ˛ıGˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇ˛ˇ˛ˇÚˇÇãƒˇ˛ˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇ˛ˇ¸ˇ ˇˇˇˇˇˇˆˇ˝ˇ3ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇëƒˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇ˛    ˇˇˇˇˇ˛ˇ˜Gˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇè√ˇ˛ˇ˛ˇˇˇˇˇ˛ˇ˛ˇ˛˛˛ˇˇˇ˛ˇˇ˛ ˇˇˇ˛ˇˇ˛ˇˆGˇˇ˛ˇˇ˛˛ˇ˛ˇˇˇˇˇˇˇˇˇˇ˛˛ˇÚˇÇ[¥ˇ‹ˇÛGˇˇ˛ˇÚˇÇ\¥ˇfiˇˇÚGˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇ
  9871. Å∂ˇÚˇÇ Å˝∏ˇÚˇÇ Å˝∏ˇÚˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇÅ•ˇÇ
  9872. Å∏ˇˇÇTÅJˇˇˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇh∞ˇ¸ˇÙˇˇ˛ˇˇ¯ˇıGˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇù÷ˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇ˛ˇˇˇˇ˛ˇˇˇˆˇ˝ˇ3ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇ£◊#ˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇ˛ˇ˛˛˛˛˛ˇˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇˆGˇˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇÚˇÇú◊ˇ˛ˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇ˛ˇ¸ˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˆˇ˝ˇ3ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÅÚ¢◊ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˜Gˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇÅÚ°÷ˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇ˛ˇ˛ˇ˛˛˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇˇ˛ˇ˜ˇ˛ˇ4ˇˇˇˇˇˇˇ˛ˇ˛˛ˇ˛ˇˇˇ˛ˇÅÚY»ˇ€ˇ‡Gˇˇ˛ˇÅÚZ»ˇ›ˇˇflGˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚòÅ\Ä¿[HH‡µƒòIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  9873. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  9874. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  9875.  
  9876.  
  9877.  ˛êêêÄ¿[R6íë' Å∂ˇÅÚ
  9878. Å˝∏ˇÅÚ
  9879. Å˝∏ˇÅÚÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ• Å∏ˇÅRÅJˇˇÅSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚZΩˇ˛ˇˇÍˇˇ˛ˇ˝ˇ˝ˇ˝ˇˇ˛ˇÅÚ¶‚ˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˛
  9880. ˇˇˇˇˇˇˇˇ˛˝ˇ˛ˇˇˇˇ˛ˇˇˇ˛˛ˇˇˇˆGˇˇˇˇˇˇˇˇˇˇ˛ˇÅÚÆ„&ˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ ˇ˛ˇˇˇˇ˛
  9881. ˇ˛ˇˇˇˇˇ˜Gˇ˛ˇˇ˛˛ˇ˛ˇÅÚù„ˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˛    ˇˇˇˇ˚˛ˇˇ¸ˇ˚ˇˇˇˇ¸ˇ˜)ˇˇˇˇˇˇ˝ˇÔˇÅ¨„ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇ˛ˇˇ˛
  9882. ˇˇˇˇˇˇÙGˇˇˇˇˇˇˇˇ˛ˇÛˇÅ≠‚%˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛
  9883. ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇˇˇ˝ˇ˛ˇ˛ˇˇˇˆˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛˛ˇÛˇÅa‘ˇ’ˇÓˇˇGˇ˛ˇÛˇÅb‘ˇ’ˇÔˇˇˇGˇ˛ˇÛˇÅUÅIˇ˛ˇÛˇÅUÅIˇ˛ˇÛˇÅUÅIˇ˛ˇÛˇÅ
  9884. Å∂ˇÛˇÅ Å˝∏ˇÛˇÅ Å˝∏ˇÛˇÅŶˇÈˇ˛ˇ›ˇÛˇ–dŶˇÍˇ˛ˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˝ˇˇˇˇ˛ˇˇˇ˝ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇıgÅ¶Ûˇ˜ˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇ˛ˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˆfŶˇÍ˛¸"ˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛˛˛˛˛ˇ˛ˇ˛˛ˇ˛ˇˇˇ˛ˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˆ`ŶˇÍˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ ˇˇˇˇˇˇˇ˚ˇˇ¸ˇˇˇˇˇˇˇˇˇÛcŶˇÈ˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˛ˇˇˇ˝ˇ˛ˇˇˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇıÅ∏ˇÒˇŸˇ™XÅJˇˇÒˇŸˇ™UÅIˇ˛ˇÛˇÅUÅIˇ˛ˇÛˇÅUÅIˇ˛ˇÛˇÅUÅIˇ˛ˇÛˇÅUÅIˇ˛ˇÛˇÅ_∂ˇ˛ˇÔ¸ˇˆGˇˇˇˇˇˇˇˇˇˇ˛ˇÛˇÅü€ˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇˇˇ˛
  9885. ˇˇˇˇˇˇˇˇ˛˝ˇ˛ˇˇˇˇ¸ˇˇ˛ˇ˜ˇ˝ˇ*ˇˇˇˇˇˇˇ˛ˇÛˇÅ®‹&ˇˇˇˇˇ˛ˇˇ˛ˇˇˇ˛ˇˇˇˇ˛˛˛ˇ˛ˇˇ˛ˇˇ˛ ˇˇˇˇˇˇ˝ˇ˛˛˛˜Gˇˇˇˇˇ˛ˇˇˇˇ˛˛ˇÛˇÅò‹ˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇ˛    ˇˇˇˇ˚˛ˇˇ¸ˇ˙ˇˇ˛ˇ˜ˇ˝ˇ*ˇˇˇˇˇˇˇÔˇÅ•‹ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇ˛ˇˇ˝ˇˇ˛ˇ˜Gˇˇˇˇˇˇˇˇˇˇˇ˛ˇÅÚ¢€ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ˇˇ˛˛
  9886. ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇ¸˛ˇ˛ˇˆGˇˇˇ˛ˇˇˇ˛ˇ˛˛ˇ˛ˇÅÚYÕˇ’ˇ·Gˇˇ˛ˇÅÚYÕˇ’ˇ·Gˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚ Å∂ˇÅÚ
  9887. Å˝∏ˇÅÚ
  9888. Å˝∏ˇÅÚÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ• Å∏ˇÅòÅ\¿fi[HH‡®|ôIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  9889. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  9890. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  9891.  
  9892.  
  9893.  ˛êêê¿fi[í6∞ë'RÅJˇˇÅSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚ^“ˇˇ˛ˇ‡˛ˇˇÍˇˇ˛ˇ¸ˇ¸ˇˇ˛ˇÅÚ∂˜ˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˝ˇˇˇˇ¸ˇ˛ˇˇ˝
  9894. ˇˇˇˇˇˇˇˇ˛˝ˇ˛ˇˇˇˇ˛ˇˇˇ˛˛ˇˇˇˆGˇˇˇˇˇˇˇˇ˛ˇÅÚ√¯"˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ ˇ˛ˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ ˇ˛ˇˇˇˇ˛
  9895. ˇ˛ˇˇˇˇˇ˜Gˇˇ˛ˇˇˇ˛ˇÅÚ±¯ˇ˛ˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˝ˇ˛    ˇˇˇˇ˚˛ˇˇ¸ˇ˚ˇˇˇˇ¸ˇ˜$ˇˇˇˇ˝ˇ˛ˇÅÚø¯ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˚ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇ˛ˇˇ˛
  9896. ˇˇˇˇˇˇÙGˇˇˇˇˇˇ˛ˇÚˇÇ¡˜
  9897. ˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛˛˛ˇ˛ˇ˛˛ˇˇˇ˛ˇ˛˝ˇ˛ˇ˛
  9898. ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇˇˇ˝ˇ˛ˇ˛ˇˇˇˆGˇˇˇ˛˛˛˛˛ˇÚˇÇaÈˇ¿ˇÓˇˇGˇ˛ˇÚˇÇbÈˇ¿ˇÔˇˇˇGˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇ
  9899. Å∂ˇÚˇÇ Å˝∏ˇÚˇÇ Å˝∏ˇÚˇÇÅ•ˇÇ"Å•ˇÎˇˇˇˇ˛ˇˇ¸ˇˇ˙˛ˇ›˛ˇ⁄EÅ•ˇÎˇˇˇˇ˛ˇˇˇˇ¸ˇ˝ˇ˛ˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˝ˇ⁄EÅ•ˇËˇ˛˛
  9900. ˛ˇ˛ˇˇ˛ˇ˝ˇ¸"ˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇÿDÅ•Ûˇıˇˇˇ˛ˇˇˇˇˇ˝ˇ¸ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇÿFÅ•ˇËˇˇˇˇˇˇˇˇˇ˝ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇÿKÅ∏ˇˇËˇ˛ˇ˛ˇˇˇ˛¸ˇˇ˛˛!˛ˇˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇÿXÅJˇˇˇ√ˇ¡YÅIˇ˛ˇÚˇ√ˇ¡UÅIˇ˛ˇÚˇÇò,@[@[∞6ë Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò˚˛>?˘ˇ¯Òf˘ÃÊwì|a¶hÒò1?˘ˇ¯Òô©2©SQ‘ëDúJd1?˘ˇ¯Òâ©2ØSV‘Ò$ÅÀ‡1?˘ˇ¯Òô©2®S4‘Åò $1?˘ˇ˚ˇ¯Òf©Ã¶S‘a$gqò>?˘ˇ¯Ô˛˘@˛?˘ˇ¯Ô˛˘@˛?˘ˇ¯Ô
  9901. Ò?˘ˇ¯Ô
  9902. Ò?˘ˇ¯Ô
  9903. Ò?˘ˇ¯Ô
  9904. Ò?˘ˇ¯Ô
  9905. Ò˘ˇ¯Ô
  9906. Ò˘ˇ¯Ô’’’’’’
  9907. Ò?˘ˇ‡Ô
  9908. Ò?˘ˇ‡Ô
  9909. Ò?˘ˇ¯Ô
  9910. Ò?˘ˇ¯Ô
  9911. Ò?˘ˇ¯Ô
  9912. Ò?˘ˇ¯Ô
  9913. Ò?˘ˇ¯Ô˚
  9914. @ÄÄ ?˘ˇ¯Ô3|Êssy∞”4xÃhÊ?˘ˇ¯ÔL‘ôT—h»¢N%2%ô?˘ˇ¯ÔD‘ôW—h»í@Â%ü?˘ˇ¯ÔL‘ôTQh»äLe%ò?˘ˇ¯Ô3TÊSQh∞í3∏Ã"Ê?˘ˇ˚ˇ¯Ò˝Ä˚ Ä?˘ˇ¯Ò˝Ä˚ Ä?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò?˘ˇ¯Ò Ò˘ˇ¯Ò Ò˘ˇ¯ÒÊÒÊÒ¸D˛Êù Ã˚çΔÊvd\»ˇÊ˛
  9915. ïA2™SI¢LíÂ0ˇÊ˛
  9916. ï!™SO¢LíÂˡÊˇ¿ï2™SH¢Lí¡Ò?˘ˇ‡˛
  9917. ï Ã´çF¢ta\»ˇÒ?˘ˇ‡˚˛@¸Ò?˘ˇ¯˚˛@¸ Ò?˘ˇ¯ÒÒ?˘ˇ¯†¿˛Ò?˘ˇ¯    }…èç∏Fq3¿˛Ò?˘ˇ¯U*JÜ®âKL†˝Ò?˘ˇ¯    U+ ö®OKGê˝!˙    Å>?˘ˇ¯U*
  9918. í®(KL˝%˛
  9919. f˘ÃÊvÛa¶hÒò1?˘ˇ¯    U…äé®FE3˝˛
  9920. ô©2©R—ëDúJd1?˘ˇ¯˛ı˛
  9921. â©2ØR—ë$ÅÀ‡1?˘ˇ¯˛ı˛
  9922. ô©2®R—ëò $1?˘ˇ˚ˇ¯Ò˛
  9923. f©Ã¶R—a$gqò>?˘ˇ¯Ôò,@Ä[@Ä[60ë˝˙@˛?˘ˇ¯Ô˝˙@˛?˘ˇ¯Ô
  9924. Ò?˘ˇ¯Ô
  9925. Ò?˘ˇ¯Ô
  9926. Ò?˘ˇ¯Ô
  9927. Ò˘ˇ¯Ô
  9928. Ò˘ˇ¯Ô’’’’’’
  9929. Ò?˘ˇ‡Ô
  9930. Ò?˘ˇ‡Ô
  9931. Ò?˘ˇ¯Ô
  9932. Ò?˘ˇ¯Ô
  9933. Ò?˘ˇ¯Ô
  9934. Ò?˘ˇ¯Ô
  9935. Ò?˘ˇ¯Ô
  9936. Ò?˘ˇ¯Ô˚˛Ä ?˘ˇ¯ÔÕÛôÃÌ3p”4xÃhÊ?˘ˇ¯Ô3ReR•L–¢N%2%ô?˘ˇ¯ÔRe^•D–í@Â%ü?˘ˇ¯Ô3ReP•L–äLe%ò?˘ˇ˚ˇ¯˝¿ˆÕSôL•3Pí3∏Ã"Ê?˘ˇ¯˝¿ˆ˛˙ Ä?˘ˇ¯˛¯ˆ˛˙ Ä?˘ˇ¯˛ˆÒ?˘ˇ¯˛‡ˆÒ?˘ˇ¯˛¿ˆÒ?˘ˇ¯˛ˇˇ¿˜Ò˘ˇ¯˛Ä¿˜Ò˘ˇ¯˛Ä¿˜ Ê˛ü¸¿˜ Êü¸»˜ ÊôÃØ Ê?Å¿˛˜ Êˇ¿?Å¿ˇ˜ Ê?Å¿ˇ˜Ò?˘ˇ‡?Å¿˛˜Ò?˘ˇ‡ſØÒ?˘ˇ¯Å¿»˜Ò?˘ˇ¯˛Å¿¿˜Ò?˘ˇ¯˛Å¿¿˜Ò?˘ˇ¯˛ˇˇ¿˜Ò?˘ˇ¯˛ˇˇ¿˜Ò?˘ˇ¯˛ˇ¿˜˙
  9937. ˛>?˘ˇ¯ÒõÁ3ô⁄f·¶hÒò1?˘ˇ¯Òf§ •Jô°DúJd1?˘ˇ¯Ò&§ ΩJâ°$ÅÀ‡1?˘ˇ¯Òf§ °Jô°ò $1?˘ˇ˚ˇ¯Òöß2ôJf°$gqò>?˘ˇ¯Ô˝˙@˛?˘ˇ¯Ô˝˙@˛?˘ˇ¯Ô
  9938. Ò?˘ˇ¯Ô
  9939. Ò?˘ˇ¯Ô
  9940. Ò?˘ˇ¯Ô
  9941. Ò˘ˇ¯Ô
  9942. Ò˘ˇ¯Ô’’’ò,Ä¿[Ä¿[06pë’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’ò,¿fi[¿fi[p6éë’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’òÅ\@[HH‡µƒöIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  9943. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  9944. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  9945.  
  9946.  
  9947.  ˛êêê@[∞6ë'UÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇdÀˇˇ˛ˇ‡˛ˇÔ¸ˇˆGˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇ∞ˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˝ˇˇˇˇ¸ˇ˛ˇˇ˝
  9948. ˇˇˇˇˇˇˇˇ˛˝ˇ˛ˇˇˇˇ¸ˇˇ˛ˇ˜ˇ˝ˇ*ˇˇˇˇˇˇˇ˛ˇÚˇÇΩÒ+ˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛˛ ˛ˇˇ˛ˇˇ˛˛˛ˇ˛ˇˇ˛ˇˇ˛ ˇˇˇˇˇˇ˝ˇ˛˛˛˜Gˇˇˇˇˇ˛ˇˇˇˇ˛˛ˇÚˇÇØÒˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ˛    ˇˇˇˇ˚˛ˇˇ¸ˇ˙ˇˇ˛ˇ˜ˇ˝ˇ*ˇˇˇˇˇˇˇ˛ˇÚˇÇπÒˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇ˚ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇ˛ˇˇ˝ˇˇ˛ˇ˜Gˇˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇ∂&˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛˛˛ˇ˝ˇˇ˛˛
  9949. ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇ¸˛ˇ˛ˇˆGˇˇˇ˛ˇˇˇ˛ˇ˛˛ˇ˛ˇÅÚY‚ˇ¿ˇ·Gˇˇ˛ˇÅÚY‚ˇ¿ˇ·Gˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚ Å∂ˇÅÚ
  9950. Å˝∏ˇÅÚ
  9951. Å˝∏ˇÅÚÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ• Å∏ˇÅRÅJˇˇÅSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚ_ ˇˇ˚ˇÏ˛ˇˇÍˇˇ˛ˇ¸ˇ¸ˇˇ˛ˇÅÚ±Ôˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˝ˇˇˇˇˇ˝
  9952. ˇˇˇˇˇˇˇˇ˛˝ˇ˛ˇˇˇˇ˛ˇˇˇ˛˛ˇˇˇˆGˇˇˇˇˇˇˇˇ˛ˇÅÚª"˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ ˇ˛ˇˇˇˇ˛
  9953. ˇ˛ˇˇˇˇˇ˜Gˇˇ˛ˇˇˇ˛ˇÅÚ´ˇ˛ˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇ˛ˇˇˇˇ˛ˇˇˇ˛    ˇˇˇˇ˚˛ˇˇ¸ˇ˚ˇˇˇˇ¸ˇ˜$ˇˇˇˇ˝ˇ˛ˇÅÚ∏ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇ˛ˇˇˇ˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇ˛ˇˇ˛
  9954. ˇˇˇˇˇˇÙGˇˇˇˇˇˇ˛ˇÅÚπÔ
  9955. ˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛˛˛ˇˇˇ˛ˇˇ˛˝ˇ˛ˇ˛
  9956. ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇˇˇ˝ˇ˛ˇ˛ˇˇˇˆGˇˇˇ˛˛˛˛˛ˇÚˇÇa·ˇ»ˇÓˇˇGˇ˛ˇÚˇÇb·ˇ»ˇÔˇˇˇGˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇUÅIˇ˛ˇÚˇÇ
  9957. Å∂ˇÚˇÇ Å˝∏ˇÚˇÇ Å˝∏ˇÚˇÇÅ•ˇÇ Å•ˇÎˇˇ˚ˇ˛ˇ”ˇÔˇ˛ˇÎ_Å•ˇÎˇˇ˛ˇ˛ˇˇˇ¸ˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇ    ˇˇˇˇˇ˛ˇ˛ˇˇˇˇÚ]Å•ˇÊ    ˇ˛ˇ˛ˇ¸#˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˛Ò\Å•ˇÊ
  9958. ˇˇˇˇˇ˝ˇ˛ˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇ˛ˇˇˇˇˇˇˇ˛ˇˇ˝ˇˇÚ_Å•ÛˇÛˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇˇ˛ˇˇˇ¸ˇÛaÅ∏ˇˇÊ
  9959. ˇˇ˛ˇˇ¸
  9960. ˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛˛˛ˇˇˇ˛ˇ˛ˇˇ˛˛˛ˇ˝
  9961. ˇ˛ˇˇ˛ˇ˛ˇÚ\ÅJˇˇˇ»ˇÁˇ◊]ÅIˇ˛ˇÚˇ»ˇÁˇ◊UÅIˇ˛ˇÚˇÇlÅIˇ˛ˇÚˇÁˇıˇÓˇˇÌˇÒˇˇÁúÅIˇ˛ˇÚˇÍˇˇ¸ˇ˛ˇˇˇˇ˛¸ˇ˛ˇˇˇˇ˛ˇ˝ˇ˛ˇˇ˛ˇ˛ˇˇˇˇˇ˛ˇ˝ˇˇÁüÅIˇ˛ˇÚˇÎˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇˇˇ˝˛ˇˇˇˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇ˛ˇˇ‡õÅIˇ˛ˇÚˇÍˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇ˝ˇ˝ˇ    ˇˇˇˇˇ˛˝ˇˇ·®√ˇˇ˚ˇÏ˛ˇÔ¸ˇˆGˇˇˇˇˇˇˇˇˇ˛ˇÚˇÈˇˇˇˇˇˇˇˇˇ¸ˇˇˇˇˇˇˇˇ¸ˇˇ˝ ˇˇˇˇˇˇˇ˚ˇ‚˝Ëˇˇˇˇ˛ˇ ˛ˇ˛ˇˇˇˇ˛ˇ ˇˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˝
  9962. ˛ˇˇˇˇˇˇˇ˛˛ˇ˛˛˛ˇ˛ˇ¸ˇ˛˛˛˜ˇ˛˛ˇ*ˇ˛ˇ˛ˇˇˇ˛ˇÚˇÍˇ˛ˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇˇˇ˛˛ˇˇˇˇ˝ˇ˛ˇˇˇ˛
  9963. ˇ˛ˇ˛ˇ˛˛˛ˇ‰∏È+ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇ˛ˇˇ˛ˇ˛ ˇˇˇˇˇˇ˝ˇˇ˛ˇ˜Gˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇflˇ•≠Èˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˝ˇ ˇˇˇˇˇˇ˛ˇˇˇ˛    ˇˇˇˇ˚˛ˇˇ¸ˇ˙ˇˇ˛ˇ˜ˇ˝ˇ*ˇˇˇˇˇˇ˛ˇÚˇflˇ•¥Èˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝
  9964. ˛ˇˇˇ˛ˇ˛ˇˇˇ˛ˇ˛    ˇ˛ˇˇˇ˛ˇ˛ˇˇ˛ˇ˛˝ˇˇ˛ˇ˜Gˇˇˇˇ˛ˇˇˇˇˇ˛ˇÚˇÇ™Ë
  9965. ˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˝ˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇˇˇ¸¸ˇˆˇ˛ˇ+ˇˇˇˇˇˇˇ˛ˇÅÚòÅ\@Ä[HH‡®|õIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  9966. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  9967. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  9968.  
  9969.  
  9970.  ˛êêê@Ä[60ë'Y⁄ˇ»ˇ·Gˇˇ˛ˇÅÚY⁄˛»ˇ·Gˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚ Å∂ˇÅÚ
  9971. Å˝∏ˇÅÚ
  9972. Å˝∏ˇÅÚÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ• Å∏ˇÅRÅJˇˇÅSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚ_Ãˇˇ„˛ˇˇÍˇˇˇ˛ˇ'ˇˇˇˇˇ˛ˇÅÚπÒ
  9973. ˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇ"ˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇ˛ˇˇ˝
  9974. ˇ˛ˇˇˇˇˇ˛˛˛˛ˇ˛ˇ˛ˇ˛˛˛ˇˇ˛ˇ˛ˇ˛ˇˆGˇˇ˛ˇˇˇ˛ˇˇˇˇ˛ˇÅÚ∫Ú4ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇ˛ˇˇ˛ˇ˛ ˇˇˇˇˇˇ˛
  9975. ˇˇˇˇˇˇˇ˜'ˇˇˇˇˇˇ˝ˇ˛ˇÅÚ≠Úˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˝ˇ
  9976. ˇˇˇˇˇ˛ˇˇˇˇ˝    ˇˇˇˇ˚˛ˇˇ¸ˇ˚ˇˇˇˇ¸ˇ˜'ˇˇˇˇˇˇ˝ˇ˛ˇÅÚøÚ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇ˛ˇ˛˝ˇˇˇ˛ˇˇˇˇˇ˛˝ˇ˛    ˇˇˇˇˇ˛ˇˇˇ˛˛˛ˇ˛
  9977. ˇˇ˛ˇ˛ˇÙGˇˇˇˇˇ˛ˇˇˇ˛ˇÚˇfiˇˇßøÒ
  9978. ˇˇˇˇˇˇˇ˛ˇ"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇˇˇ˝ˇ˛ˇ˛ˇˇˇˆˇˇ˛ˇ'ˇˇˇˇ˛ˇÚˇfiˇˇße„ˇΔˇÓˇˇGˇ˛ˇÚˇ·˘ˇ™f„ˇΔˇÔ˛ˇˇGˇ˛ˇÚˇ‡˚ˇ©YÅIˇ˛ˇÚˇfl˝ˇ®YÅIˇ˛ˇÚˇfl˛ˇßÅ∂ˇÚˇÊÔˇØÅ˝∏ˇÚˇÊˇÚˇˇØÅ˝∏ˇÚˇÊˇÚˇˇØÅ•ˇÊˇˆˇˇˇØÅ•ˇÈˇˇˆˇˇˇˇ≤$Å•ˇÈ    ˇˇˇˇˇ˛ˇ ˇˇˇˇˇˇ≥Å•ˇÏ˙ˇ˚˛ˇ˚˙ˇ¥Å•Ûˇ˘˙ˇ˚˛ˇ˚˘ˇµÅ•ˇÏ˙ˇ˚˛ˇ˚˘ˇµÅ∏ˇˇÏ˙ˇ˚˛ˇ˚˙ˇ¥hÅJˇˇˇÈˇˇˇ˚˛ˇ˚ˇˇˇˇ≥hÅIˇ˛ˇÚˇÈˇˇ˚˛ˇ˚ˇˇˇ≤bÅIˇ˛ˇÚˇÊˇ˚˛ˇ˚ˇˇØbÅIˇ˛ˇÚˇÊˇ˚˛ˇ˚ˇˇØYÅIˇ˛ˇÚˇÊÔˇØYÅIˇ˛ˇÚˇÊÔˇØYÅIˇ˛ˇÚˇÂˇØa≈ˇˇ„˛ˇÔ¸ˇˆGˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇ≤Ͳˇ˛ˇˇ˛˛ˇ$ˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ˇ˝
  9979. ˛ˇˇˇˇˇˇˇ˛˛ˇ˛˛˛ˇ˛ˇ¸ˇ˛˛˛˜ˇ˛˛ˇ*ˇ˛ˇ˛ˇˇ˛˛ˇÚˇÇµÎ4ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇ˛ˇˇ˛ˇ˛ ˇˇˇˇˇˇ˝ˇˇ˛ˇ˜Gˇˇˇˇˇˇˇˇˇˇˇ˛ˇÚˇÇ™Îˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˝ˇ
  9980. ˇˇˇˇˇ˛ˇˇˇˇ˝    ˇˇˇˇ˚˛ˇˇ¸ˇ˙ˇˇ˛ˇ˜ˇ˝ˇ*ˇˇˇˇˇˇˇ˛ˇÚˇÇµÎˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇˇˇˇ˝ˇ˛ˇˇˇˇˇˇˇˇ˝ˇ˛    ˇ˛ˇˇˇ˛ˇ˛ˇˇ˛ˇ˛˝ˇˇ˛ˇ˜Gˇˇˇˇ˛ˇˇˇˇˇˇ˛ˇÚˇÇ¨Í
  9981. ˇˇˇˇˇˇˇ˛ˇ"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇˇˇ¸¸ˇˆˇ˛ˇ+ˇˇˇˇˇˇˇˇ˛ˇÅÚY‹ˇΔˇ·Gˇˇ˛ˇÅÚY‹ˇΔˇ·Gˇ˛ˇÅÚSÅIˇ˛ˇÅÚSÅIˇ˛ˇÅÚ Å∂ˇÅÚ
  9982. Å˝∏ˇÅÚ
  9983. Å˝∏ˇÅÚÅÅ•ÅÅ•ÅÅ•òÅ\Ä¿[HH‡µƒúIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  9984. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  9985. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  9986.  
  9987.  
  9988.  ˛êêêÄ¿[06pë'ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•òÅ\¿fi[HH‡®|ùIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  9989. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  9990. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  9991.  
  9992.  
  9993.  ˛êêê¿fi[p6éë'ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•ÅÅ•†è†É†ø
  9994. d,     Helvetica
  9995.     °dONLNdÆ*5@(Q6Figure 4°dONLNd∑6AÖ* Math Component Resource x4x&,Times
  9996. ({) 
  9997. +
  9998. 154ìÚ·Ø
  9999. (Ú*1TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  10000. )”
  10001. December 1992ˇ†æ°¿9pse
  10002. currentpoint
  10003. /picTop exch def
  10004. /picLeft exch def
  10005. psb
  10006. †ø†æ°¿=pse
  10007. currentpoint
  10008. /picBottom exch def
  10009. /picRight exch def
  10010. psb
  10011. †ø†æ°¿[ 133 218 480 573]
  10012. °¿€1 dict begin /s exch def
  10013. picLeft picTop translate
  10014. picRight picLeft sub s 2 get s 0 get sub div
  10015. picBottom picTop sub s 1 get s 3 get sub div
  10016. scale
  10017. s 0 get neg s 3 get neg translate
  10018. end
  10019. /showpage {} def
  10020. /copypage {} def
  10021. °¿ %!PS-Adobe-3.0 EPSF-3.0
  10022. %%Creator: Adobe Illustrator(TM) 3.2
  10023. %%For: (Engineering Support) (Apple Computer, Inc.)
  10024. %%Title: (#3)
  10025. %%CreationDate: (10/5/92) (5:53 PM)
  10026. %%BoundingBox: 133 218 480 573
  10027. %%DocumentProcessColors: Magenta Black
  10028. %%DocumentFonts: Helvetica
  10029. %%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0
  10030. %%+ procset Adobe_cmykcolor 1.1 0
  10031. %%+ procset Adobe_cshow 1.1 0
  10032. %%+ procset Adobe_customcolor 1.0 0
  10033. %%+ procset Adobe_typography_AI3 1.0 1
  10034. %%+ procset Adobe_IllustratorA_AI3 1.0 1
  10035. %AI3_ColorUsage: Color
  10036. %AI3_TemplateBox: 306 396 306 396
  10037. %AI3_TileBox: 30 31 582 761
  10038. %AI3_DocumentPreview: Macintosh_ColorPic
  10039. %%EndComments
  10040. %%BeginProlog
  10041. %%BeginResource: procset Adobe_packedarray 2.0 0
  10042. %%Title: (Packed Array Operators)
  10043. %%Version: 2.0 
  10044. %%CreationDate: (8/2/90) ()
  10045. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  10046. userdict /Adobe_packedarray 5 dict dup begin put
  10047. /initialize            % - initialize -
  10048. {
  10049. /packedarray where
  10050.     {
  10051.     pop
  10052.     }
  10053.     {
  10054.     Adobe_packedarray begin
  10055.     Adobe_packedarray
  10056.         {
  10057.         dup xcheck
  10058.             {
  10059.             bind
  10060.             } if
  10061.         userdict 3 1 roll put
  10062.         } forall
  10063.     end
  10064.     } ifelse
  10065. } def
  10066. /terminate            % - terminate -
  10067. {
  10068. } def
  10069. /packedarray        % arguments count packedarray array
  10070. {
  10071. array astore readonly
  10072. } def
  10073. /setpacking            % boolean setpacking -
  10074. {
  10075. pop
  10076. } def
  10077. /currentpacking        % - setpacking boolean
  10078. {
  10079. false
  10080. } def
  10081. currentdict readonly pop end
  10082. %%EndResource
  10083. Adobe_packedarray /initialize get exec
  10084. %%BeginResource: procset Adobe_cmykcolor 1.1 0
  10085. %%Title: (CMYK Color Operators)
  10086. %%Version: 1.1 
  10087. %%CreationDate: (1/23/89) ()
  10088. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  10089. currentpacking true setpacking
  10090. userdict /Adobe_cmykcolor 4 dict dup begin put
  10091. /initialize            % - initialize -
  10092. {
  10093. /setcmykcolor where
  10094.     {
  10095.     pop
  10096.     }
  10097.     {
  10098.     userdict /Adobe_cmykcolor_vars 2 dict dup begin put
  10099.     /_setrgbcolor
  10100.         /setrgbcolor load def
  10101.     /_currentrgbcolor
  10102.         /currentrgbcolor load def
  10103.     Adobe_cmykcolor begin
  10104.     Adobe_cmykcolor
  10105.         {
  10106.         dup xcheck
  10107.             {
  10108.             bind
  10109.             } if
  10110.         pop pop
  10111.         } forall
  10112.     end
  10113.     end
  10114.     Adobe_cmykcolor begin
  10115.     } ifelse
  10116. } def
  10117. /terminate            % - terminate -
  10118. {
  10119. currentdict Adobe_cmykcolor eq
  10120.     {
  10121.     end
  10122.     } if
  10123. } def
  10124. /setcmykcolor        % cyan magenta yellow black setcmykcolor -
  10125. {
  10126. 1 sub 4 1 roll
  10127. 3
  10128.     {
  10129.     3 index add neg dup 0 lt
  10130.         {
  10131.         pop 0
  10132.         } if
  10133.     3 1 roll
  10134.     } repeat
  10135. Adobe_cmykcolor_vars /_setrgbcolor get exec
  10136. pop
  10137. } def 
  10138. /currentcmykcolor    % - currentcmykcolor cyan magenta yellow black
  10139. {
  10140. Adobe_cmykcolor_vars /_currentrgbcolor get exec
  10141. 3
  10142.     {
  10143.     1 sub neg 3 1 roll
  10144.     } repeat
  10145. 0
  10146. } def
  10147. currentdict readonly pop end
  10148. setpacking
  10149. %%EndResource
  10150. %%BeginResource: procset Adobe_cshow 1.1 0
  10151. %%Title: (cshow Operator)
  10152. %%Version: 1.1 
  10153. %%CreationDate: (1/23/89) ()
  10154. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  10155. currentpacking true setpacking
  10156. userdict /Adobe_cshow 3 dict dup begin put
  10157. /initialize            % - initialize -
  10158. {
  10159. /cshow where
  10160.     {
  10161.     pop
  10162.     }
  10163.     {
  10164.     userdict /Adobe_cshow_vars 1 dict dup begin put
  10165.     /_cshow        % - _cshow proc
  10166.         {} def
  10167.     Adobe_cshow begin
  10168.     Adobe_cshow
  10169.         {
  10170.         dup xcheck
  10171.             {
  10172.             bind
  10173.             } if
  10174.         userdict 3 1 roll put
  10175.         } forall
  10176.     end
  10177.     end
  10178.     } ifelse
  10179. } def
  10180. /terminate            % - terminate -
  10181. {
  10182. } def
  10183. /cshow                % proc string cshow -
  10184. {
  10185. exch
  10186. Adobe_cshow_vars
  10187.     exch /_cshow
  10188.     exch put
  10189.     {
  10190.     0 0 Adobe_cshow_vars /_cshow get exec
  10191.     } forall
  10192. } def
  10193. currentdict readonly pop end
  10194. setpacking
  10195. %%EndResource
  10196. %%BeginResource: procset Adobe_customcolor 1.0 0
  10197. %%Title: (Custom Color Operators)
  10198. %%Version: 1.0 
  10199. %%CreationDate: (5/9/88) ()
  10200. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  10201. currentpacking true setpacking
  10202. userdict /Adobe_customcolor 5 dict dup begin put
  10203. /initialize            % - initialize -
  10204. {
  10205. /setcustomcolor where
  10206.     {
  10207.     pop
  10208.     }
  10209.     {
  10210.     Adobe_customcolor begin
  10211.     Adobe_customcolor
  10212.         {
  10213.         dup xcheck
  10214.             {
  10215.             bind
  10216.             } if
  10217.         pop pop
  10218.         } forall
  10219.     end
  10220.     Adobe_customcolor begin
  10221.     } ifelse
  10222. } def
  10223. /terminate            % - terminate -
  10224. {
  10225. currentdict Adobe_customcolor eq
  10226.     {
  10227.     end
  10228.     } if
  10229. } def
  10230. /findcmykcustomcolor    % cyan magenta yellow black name findcmykcustomcolor object
  10231. {
  10232. 5 packedarray
  10233. }  def
  10234. /setcustomcolor        % object tint setcustomcolor -
  10235. {
  10236. exch
  10237. aload pop pop
  10238. 4
  10239.     {
  10240.     4 index mul 4 1 roll
  10241.     } repeat
  10242. 5 -1 roll pop
  10243. setcmykcolor
  10244. } def
  10245. /setoverprint        % boolean setoverprint -
  10246. {
  10247. pop
  10248. } def
  10249. currentdict readonly pop end
  10250. setpacking
  10251. %%EndResource
  10252. %%BeginResource: procset Adobe_typography_AI3 1.1 0
  10253. %%Title: (Typography Operators)
  10254. %%Version: 1.0 
  10255. %%CreationDate:(5/31/90) ()
  10256. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  10257. currentpacking true setpacking
  10258. userdict /Adobe_typography_AI3 47 dict dup begin put
  10259. /initialize            % - initialize -
  10260. {
  10261. /TZ
  10262.  where
  10263.     {
  10264.     pop
  10265.     }
  10266.     {
  10267.     Adobe_typography_AI3 begin
  10268.     Adobe_typography_AI3
  10269.         {
  10270.         dup xcheck
  10271.             {
  10272.             bind
  10273.             } if
  10274.         pop pop
  10275.         } forall
  10276.     end
  10277.     Adobe_typography_AI3 begin
  10278.     } ifelse
  10279. } def
  10280. /terminate            % - terminate -
  10281. {
  10282. currentdict Adobe_typography_AI3 eq
  10283.     {
  10284.     end
  10285.     } if
  10286. } def
  10287. % [ number value stream [ array for encoding modification ] modifyEncoding ==> [ modified array ]
  10288. /modifyEncoding
  10289. {
  10290.     /_tempEncode exch ddef
  10291.     
  10292.     % pointer for sequential encodings
  10293.     /_pntr 0 ddef
  10294.     
  10295.     {
  10296.         % get bottom object
  10297.         counttomark -1 roll
  10298.         % is it a mark ?
  10299.         dup type dup /marktype eq         
  10300.         {
  10301.             % exit
  10302.             pop pop exit
  10303.         }
  10304.         {
  10305.             % ... object ... type ....
  10306.             % insert if a nametype
  10307.             /nametype eq
  10308.             {
  10309.                 % insert the name at _pntr and increment pointer
  10310.                 _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll
  10311.                 put
  10312.             }
  10313.             {
  10314.                 % reset _pntr if it's a number
  10315.                 /_pntr exch ddef                    
  10316.             }
  10317.             ifelse
  10318.         }
  10319.         ifelse
  10320.     }
  10321.     loop    
  10322.     
  10323.     % return the modified encoding
  10324.     _tempEncode
  10325. }
  10326. def
  10327. /TE    % Set std platform encoding     % (encoding pairs) TE -
  10328. {
  10329.     StandardEncoding 256 array copy modifyEncoding 
  10330.     /_nativeEncoding exch def
  10331. } def
  10332. % re-define font
  10333. % expected arguments
  10334. % for 'normal fonts : 
  10335. % [ /_Helvetica-Bold/Helvetica-Bold direction fontScript defaultEncoding TZ
  10336. %
  10337. % for cartographic, pictographic, and expert fonts :
  10338. % [ ... number value stream ... /_Symbol/Symbol 
  10339. %    direction fontScript defaultEncoding TZ
  10340. % for blended fonts w/ default encoding :
  10341. % [ /_AdobeSans_20ULig1XCond-Bold/AdobeSans 
  10342. %    direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
  10343. % for blended fonts w/ special encoding :
  10344. % [ ... number value stream ... /_AdobeSans_20ULig1XCond/AdobeSans 
  10345. %    direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
  10346. /TZ        
  10347. {
  10348.     % set weight vector (if present)
  10349.     dup type /arraytype eq {/_wv exch def} {/_wv 0 def} ifelse 
  10350.     % platform dependent coding flag
  10351.     /_useNativeEncoding exch def
  10352.     % pop fontScript & direction
  10353.     pop pop
  10354.     
  10355.     % create a new dictionary with length
  10356.     % equal to original dictionary length + 2
  10357.     % copy all the key/value pairs except FID
  10358.     % call makeblended font with the weight values if _wv is an array
  10359.     findfont _wv type /arraytype eq {_wv makeblendedfont} if dup length 2 add dict
  10360.     
  10361.     begin
  10362.     
  10363.         % copy all the values but the FID
  10364.         % into the new dictionary
  10365.         mark exch
  10366.         {
  10367.             1 index /FID ne { def } if cleartomark mark
  10368.         }
  10369.         forall
  10370.         % discard last mark
  10371.         pop
  10372.         
  10373.         % define FontName
  10374.         /FontName exch def
  10375.         
  10376.         % if no re-encoding stream is present
  10377.         % then if the base encoding vector of the font
  10378.         % is the same as StandardEncoding
  10379.         % and the use platform encoding flag is true
  10380.         % then install AI platform encoding
  10381.         % else leave the base encoding in effect
  10382.         counttomark 0 eq
  10383.         {
  10384.             1 _useNativeEncoding eq
  10385.             {
  10386.                 /Encoding _nativeEncoding def
  10387.             }
  10388.             if
  10389.             % clean up
  10390.             cleartomark
  10391.         }
  10392.         {    
  10393.             % custom encoding to be done
  10394.             % start off with a copy of the font's standard encoding
  10395.             /Encoding load 256 array copy 
  10396.             modifyEncoding /Encoding exch def
  10397.         }
  10398.         ifelse        
  10399.         FontName currentdict
  10400.     end
  10401.     
  10402.     % register the new font
  10403.     definefont pop
  10404. }
  10405. def
  10406. % text painting operators
  10407. /tr                    % string tr ax ay string 
  10408. {
  10409. _ax _ay 3 2 roll
  10410. } def
  10411. /trj                % string trj cx cy fillchar ax ay string 
  10412. {
  10413. _cx _cy _sp _ax _ay 6 5 roll
  10414. } def
  10415. /a0
  10416. {
  10417. /Tx    % text                            % textString Tx -
  10418.     {
  10419.     dup 
  10420.     currentpoint 3 2 roll
  10421.     tr _psf
  10422.     newpath moveto
  10423.     tr _ctm _pss
  10424.     } ddef
  10425. /Tj    % justified text                % textString Tj -
  10426.     {
  10427.     dup
  10428.     currentpoint 3 2 roll
  10429.     trj _pjsf
  10430.     newpath moveto
  10431.     trj _ctm _pjss
  10432.     } ddef
  10433.     
  10434. } def
  10435. /a1
  10436. {
  10437. /Tx    % text                            % textString Tx -
  10438.     {
  10439.     dup currentpoint 4 2 roll gsave
  10440.     dup currentpoint 3 2 roll
  10441.     tr _psf
  10442.     newpath moveto
  10443.     tr _ctm _pss
  10444.     gresto°¿ re 3 1 roll moveto tr sp
  10445.     } ddef
  10446. /Tj    % justified text                % textString Tj -
  10447.     {
  10448.     dup currentpoint 4 2 roll gsave
  10449.     dup currentpoint 3 2 roll
  10450.     trj _pjsf
  10451.     newpath moveto
  10452.     trj _ctm _pjss
  10453.     grestore 3 1 roll moveto tr sp
  10454.     } ddef
  10455.     
  10456. } def
  10457. /e0
  10458. {
  10459. /Tx    % text                            % textString Tx -
  10460.     {
  10461.     tr _psf
  10462.     } ddef
  10463. /Tj    % justified text                % textString Tj -
  10464.     {
  10465.     trj _pjsf
  10466.     } ddef
  10467. } def
  10468. /e1
  10469. {
  10470. /Tx    % text                            % textString Tx -
  10471.     {
  10472.     dup currentpoint 4 2 roll gsave 
  10473.     tr _psf  
  10474.     grestore 3 1 roll moveto tr sp 
  10475.     } ddef
  10476. /Tj    % justified text                % textString Tj -
  10477.     {
  10478.     dup currentpoint 4 2 roll gsave 
  10479.     trj _pjsf
  10480.     grestore 3 1 roll moveto tr sp 
  10481.     } ddef
  10482. } def
  10483. /i0
  10484. {
  10485. /Tx    % text                            % textString Tx -
  10486.     {
  10487.     tr sp
  10488.     } ddef
  10489. /Tj    % justified text                % textString Tj -
  10490.     {
  10491.     trj jsp
  10492.     } ddef
  10493. } def
  10494. /i1
  10495. {
  10496. W N
  10497. } def
  10498. /o0
  10499. {
  10500. /Tx    % text                            % textString Tx -
  10501.     {
  10502.     tr sw rmoveto
  10503.     } ddef
  10504. /Tj    % justified text                % textString Tj -
  10505.     {
  10506.     trj swj rmoveto
  10507.     } ddef
  10508. } def
  10509. /r0
  10510. {
  10511. /Tx    % text                            % textString Tx -
  10512.     {
  10513.     tr _ctm _pss
  10514.     } ddef
  10515. /Tj    % justified text                % textString Tj -
  10516.     {
  10517.     trj _ctm _pjss
  10518.     } ddef
  10519. } def
  10520. /r1
  10521. {
  10522. /Tx    % text                            % textString Tx -
  10523.     {
  10524.     dup currentpoint 4 2 roll currentpoint gsave newpath moveto
  10525.     tr _ctm _pss 
  10526.     grestore 3 1 roll moveto tr sp 
  10527.     } ddef
  10528. /Tj    % justified text                % textString Tj -
  10529.     {
  10530.     dup currentpoint 4 2 roll currentpoint gsave newpath moveto
  10531.     trj _ctm _pjss
  10532.     grestore 3 1 roll moveto tr sp 
  10533.     } ddef
  10534. } def
  10535. % font operators
  10536. % Binding
  10537. /To    % begin text                     % bindType To -
  10538. {
  10539.     pop _ctm currentmatrix pop
  10540. } def
  10541. /TO    % end text                    % TO -
  10542. {
  10543.     Te _ctm setmatrix newpath
  10544. } def
  10545. % Text paths
  10546. /Tp    % begin text path                % a b c d tx ty startPt Tp -
  10547. {
  10548.     pop _tm astore pop _ctm setmatrix 
  10549.     _tDict begin /W {} def /h {} def
  10550. } def
  10551. /TP    % end text path                    % TP -
  10552. {
  10553.     end
  10554.     iTm 0 0 moveto
  10555. } def
  10556. % Render mode & matrix operators
  10557. /Tr    % begin render                    % render Tr - 
  10558. {
  10559.     _render 3 le {currentpoint newpath moveto} if
  10560.     dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse
  10561.     dup /_render exch ddef
  10562.     _renderStart exch get load exec
  10563. } def
  10564. /iTm % internal set text matrix        % - iTm -    (uses _tm as implicit argument)
  10565. {
  10566. _ctm setmatrix _tm concat 0 _rise translate _hs 1 scale
  10567. } def
  10568. /Tm % set text matrix                % a b c d tx ty Tm -
  10569. {
  10570. _tm astore pop iTm 0 0 moveto
  10571. } def
  10572. /Td % translate text matrix         % tx ty Td -
  10573. {
  10574. _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto
  10575. } def
  10576. /Te    % end render                    % - Te -
  10577. {
  10578.     _render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse
  10579.     /_render -1 ddef
  10580. } def
  10581. % Attributes
  10582. /Ta    % set alignment                    % alignment Ta -
  10583. {
  10584. pop
  10585. } def
  10586. /Tf    % set font name and size        % fontname size Tf -
  10587. {
  10588. dup 1000 div /_fScl exch ddef
  10589. exch findfont exch scalefont setfont
  10590. } def
  10591. /Tl    % set leading                    % leading paragraphLeading Tl -
  10592. {
  10593. pop
  10594. 0 exch _leading astore pop
  10595. } def
  10596. /Tt    % set user tracking                % userTracking Tt -
  10597. {
  10598. pop
  10599. } def
  10600. /TW % set word spacing                % minSpace optSpace maxSpace TW -
  10601. {
  10602. 3 npop
  10603. } def
  10604. /Tw    % set computed word spacing        % wordSpace Tw
  10605. {
  10606. /_cx exch ddef
  10607. } def
  10608. /TC % set character spacing            % minSpace optSpace maxSpace TC -
  10609. {
  10610. 3 npop
  10611. } def
  10612. /Tc    % set computed char spacing     % charSpace Tc -
  10613. {
  10614. /_ax exch ddef
  10615. } def
  10616. /Ts % set super/subscripting (rise)    % rise Ts -
  10617. {
  10618. /_rise exch ddef
  10619. currentpoint
  10620. iTm
  10621. moveto
  10622. } def
  10623. /Ti    % set indentation                % firstStartIndent otherStartIndent stopIndent Ti -
  10624. {
  10625. 3 npop
  10626. } def
  10627. /Tz % set horizontal scaling        % scalePercent Tz -
  10628. {
  10629. 100 div /_hs exch ddef
  10630. iTm
  10631. } def
  10632. /TA % set pairwise kerning            % autoKern TA -
  10633.                                     %    autoKern = 0 -> no pair kerning
  10634.                                     %             = 1 -> automatic pair kerning
  10635. {
  10636. pop
  10637. } def
  10638. /Tq % set hanging quotes            % hangingQuotes Tq -
  10639.                                     %    hangingQuotes     = 0 -> no hanging quotes
  10640.                                     %                     = 1 -> hanging quotes
  10641. {
  10642. pop
  10643. } def
  10644. % Text Bodies
  10645. /TX {pop} def
  10646. %/Tx    % non-justified text            % textString Tx -
  10647. %/Tj    % justified text                % textString Tj -
  10648. /Tk    % kern                            % autoKern kernValue Tk -
  10649.                                     %      autoKern = 0 -> manual kern, = 1 -> auto kern
  10650.                                     %    kernValue = kern value in em/1000 space
  10651. {
  10652. exch pop _fScl mul neg 0 rmoveto
  10653. } def
  10654. /TK    % non-printing kern                % autoKern kernValue TK -
  10655. {
  10656. 2 npop
  10657. } def
  10658. /T* % carriage return & line feed    % - T* -
  10659. {
  10660. _leading aload pop neg Td
  10661. } def
  10662. /T*- % carriage return & negative line feed    % - T*- -
  10663. {
  10664. _leading aload pop Td
  10665. } def
  10666. /T-    % print a discretionary hyphen    % - T- -
  10667. {
  10668. _hyphen Tx
  10669. } def
  10670. /T+    % discretionary hyphen hyphen    % - T+ -
  10671. {} def
  10672. /TR    % reset pattern matrix             % a b c d tx ty TR -
  10673. {
  10674. _ctm currentmatrix pop     
  10675. _tm astore pop 
  10676. iTm 0 0 moveto 
  10677. } def
  10678. /TS    % special chars                    % textString justified TS -
  10679. {
  10680. 0 eq {Tx} {Tj} ifelse
  10681. } def
  10682. currentdict readonly pop end
  10683. setpacking
  10684. %%EndResource
  10685. %%BeginResource: procset Adobe_IllustratorA_AI3 1.0 2
  10686. %%Title: (Adobe Illustrator (R) Version 3.0 Abbreviated Prolog)
  10687. %%Version: 1.0 
  10688. %%CreationDate: (7/22/89) ()
  10689. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  10690. currentpacking true setpacking
  10691. userdict /Adobe_IllustratorA_AI3 61 dict dup begin put
  10692. % initialization
  10693. /initialize                % - initialize -
  10694. {
  10695. % 47 vars, but leave slack of 10 entries for custom Postscript fragments
  10696. userdict /Adobe_IllustratorA_AI3_vars 57 dict dup begin put
  10697. % paint operands
  10698. /_lp /none def
  10699. /_pf {} def
  10700. /_ps {} def
  10701. /_psf {} def
  10702. /_pss {} def
  10703. /_pjsf {} def
  10704. /_pjss {} def
  10705. /_pola 0 def
  10706. /_doClip 0 def
  10707. % paint operators
  10708. /cf    currentflat def    % - cf flatness
  10709. % typography operands
  10710. /_tm matrix def
  10711. /_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def 
  10712. /_renderEnd [null null null null /i1 /i1 /i1 /i1] def
  10713. /_render -1 def
  10714. /_rise 0 def
  10715. /_ax 0 def            % x character spacing    (_ax, _ay, _cx, _cy follows awidthshow naming convention)
  10716. /_ay 0 def            % y character spacing
  10717. /_cx 0 def            % x word spacing
  10718. /_cy 0 def            % y word spacing
  10719. /_leading [0 0] def
  10720. /_ctm matrix def
  10721. /_mtx matrix def
  10722. /_sp 16#020 def
  10723. /_hyphen (-) def
  10724. /_fScl 0 def
  10725. /_cnt 0 def
  10726. /_hs 1 def
  10727. /_nativeEncoding 0 def
  10728. /_useNativeEncoding 0 def
  10729. /_tempEncode 0 def
  10730. /_pntr 0 def
  10731. /_tDict 2 dict def
  10732. % typography operators
  10733. /Tx {} def
  10734. /Tj {} def
  10735. % compound path operators
  10736. /CRender {} def
  10737. % printing
  10738. /_AI3_savepage {} def
  10739. % color operands
  10740. /_gf null def
  10741. /_cf 4 array def
  10742. /_if null def
  10743. /_of false def
  10744. /_fc {} def
  10745. /_gs null def
  10746. /_cs 4 array def
  10747. /_is null def
  10748. /_os false def
  10749. /_sc {} def
  10750. /_i null def
  10751. Adobe_IllustratorA_AI3 begin
  10752. Adobe_IllustratorA_AI3
  10753.     {
  10754.     dup xcheck
  10755.         {
  10756.         bind
  10757.         } if
  10758.     pop pop
  10759.     } forall
  10760. end
  10761. end
  10762. Adobe_IllustratorA_AI3 begin
  10763. Adobe_IllustratorA_AI3_vars begin
  10764. newpath
  10765. } def
  10766. /terminate                % - terminate -
  10767. {
  10768. end
  10769. end
  10770. } def
  10771. % definition operators
  10772. /_                    % - _ null
  10773. null def
  10774. /ddef                % key value ddef -
  10775. {
  10776. Adobe_IllustratorA_AI3_vars 3 1 roll put
  10777. } def
  10778. /xput                % key value literal xput -
  10779. {
  10780. dup load dup length exch maxlength eq
  10781.     {
  10782.     dup dup load dup
  10783.     length 2 mul dict copy def
  10784.     } if
  10785. load begin def end
  10786. } def
  10787. /npop                % integer npop -
  10788. {
  10789.     {
  10790.     pop
  10791.     } repeat
  10792. } def
  10793. % marking operators
  10794. /sw                    % ax ay string sw x y 
  10795. {
  10796. dup length exch stringwidth
  10797. exch 5 -1 roll 3 index 1 sub mul add
  10798. 4 1 roll 3 1 roll 1 sub mul add
  10799. } def
  10800. /swj                % cx cy fillchar ax ay string swj x y
  10801. {
  10802. dup 4 1 roll
  10803. dup length exch stringwidth 
  10804. exch 5 -1 roll 3 index 1 sub mul add
  10805. 4 1 roll 3 1 roll 1 sub mul add 
  10806. 6 2 roll /_cnt 0 ddef
  10807. {1 index eq {/_cnt _cnt 1 add ddef} if} forall pop
  10808. exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop
  10809. } def
  10810. /ss                    % ax ay string matrix ss -
  10811. {
  10812. 4 1 roll
  10813.     {                % matrix ax ay char 0 0 {proc} -
  10814.     2 npop 
  10815.     (0) exch 2 copy 0 exch put pop
  10816.     gsave
  10817.     false charpath currentpoint
  10818.     4 index setmatrix
  10819.     stroke
  10820.     grestore
  10821.     moveto
  10822.     2 copy rmoveto
  10823.     } exch cshow
  10824. 3 npop
  10825. } def
  10826. /jss                % cx cy fillchar ax ay string matrix jss -
  10827. {
  10828. 4 1 roll
  10829.     {                % cx cy fillchar matrix ax ay char 0 0 {proc} -   
  10830.     2 npop 
  10831.     (0) exch 2 copy 0 exch put 
  10832.     gsave
  10833.     _sp eq 
  10834.         {
  10835.         exch 6 index 6 index 6 index 5 -1 roll widthshow  
  10836.         currentpoint
  10837.         }
  10838.         {
  10839.         false charpath currentpoint
  10840.         4 index setmatrix stroke
  10841.         }ifelse
  10842.     grestore
  10843.     moveto
  10844.     2 copy rmoveto
  10845.     } exch cshow
  10846. 6 npop
  10847. } def
  10848. % path operators
  10849. /sp                    % ax ay string sp -
  10850. {
  10851.     {
  10852.     2 npop (0) exch
  10853.     2 copy 0 exch put pop
  10854.     false charpath
  10855.     2 copy rmoveto
  10856.     } exch cshow
  10857. 2 npop
  10858. } def
  10859. /jsp                    % cx cy fillchar ax ay string jsp -
  10860. {
  10861.     {                    % cx cy fillchar ax ay char 0 0 {proc} -
  10862.     2 npop 
  10863.     (0) exch 2 copy 0 exch put 
  10864.     _sp eq 
  10865.         {
  10866.         exch 5 index 5 index 5 index 5 -1 roll widthshow  
  10867.         }
  10868.         {
  10869.         false charpat°¿ h
  10870.         }ifelse
  10871.     2 copy rmoveto
  10872.     } exch cshow
  10873. 5 npop
  10874. } def
  10875. % path construction operators
  10876. /pl                % x y pl x y
  10877. {
  10878. transform
  10879. 0.25 sub round 0.25 add exch
  10880. 0.25 sub round 0.25 add exch
  10881. itransform
  10882. } def
  10883. /setstrokeadjust where
  10884.     {
  10885.     pop true setstrokeadjust
  10886.     /c                % x1 y1 x2 y2 x3 y3 c -
  10887.     {
  10888.     curveto
  10889.     } def
  10890.     /C
  10891.     /c load def
  10892.     /v                % x2 y2 x3 y3 v -
  10893.     {
  10894.     currentpoint 6 2 roll curveto
  10895.     } def
  10896.     /V
  10897.     /v load def
  10898.     /y                % x1 y1 x2 y2 y -
  10899.     {
  10900.     2 copy curveto
  10901.     } def
  10902.     /Y
  10903.     /y load def
  10904.     /l                % x y l -
  10905.     {
  10906.     lineto
  10907.     } def
  10908.     /L
  10909.     /l load def
  10910.     /m                % x y m -
  10911.     {
  10912.     moveto
  10913.     } def
  10914.     }
  10915.     {%else
  10916.     /c
  10917.     {
  10918.     pl curveto
  10919.     } def
  10920.     /C
  10921.     /c load def
  10922.     /v
  10923.     {
  10924.     currentpoint 6 2 roll pl curveto
  10925.     } def
  10926.     /V
  10927.     /v load def
  10928.     /y
  10929.     {
  10930.     pl 2 copy curveto
  10931.     } def
  10932.     /Y
  10933.     /y load def
  10934.     /l
  10935.     {
  10936.     pl lineto
  10937.     } def
  10938.     /L
  10939.     /l load def
  10940.     /m
  10941.     {
  10942.     pl moveto
  10943.     } def
  10944.     }ifelse
  10945. % graphic state operators
  10946. /d                    % array phase d -
  10947. {
  10948. setdash
  10949. } def
  10950. /cf    {} def            % - cf flatness
  10951. /i                    % flatness i -
  10952. {
  10953. dup 0 eq
  10954.     {
  10955.     pop cf
  10956.     } if
  10957. setflat
  10958. } def
  10959. /j                    % linejoin j -
  10960. {
  10961. setlinejoin
  10962. } def
  10963. /J                    % linecap J -
  10964. {
  10965. setlinecap
  10966. } def
  10967. /M                    % miterlimit M -
  10968. {
  10969. setmiterlimit
  10970. } def
  10971. /w                    % linewidth w -
  10972. {
  10973. setlinewidth
  10974. } def
  10975. % path painting operators
  10976. /H                    % - H -
  10977. {} def
  10978. /h                    % - h -
  10979. {
  10980. closepath
  10981. } def
  10982. /N                    % - N -
  10983. {
  10984. _pola 0 eq 
  10985.     {
  10986.     _doClip 1 eq {clip /_doClip 0 ddef} if 
  10987.     newpath
  10988.     } 
  10989.     {
  10990.     /CRender {N} ddef
  10991.     }ifelse
  10992. } def
  10993. /n                    % - n -
  10994. {N} def
  10995. /F                    % - F -
  10996. {
  10997. _pola 0 eq 
  10998.     {
  10999.     _doClip 1 eq 
  11000.         {
  11001.         gsave _pf grestore clip newpath /_lp /none ddef _fc 
  11002.         /_doClip 0 ddef
  11003.         }
  11004.         {
  11005.         _pf
  11006.         }ifelse
  11007.     } 
  11008.     {
  11009.     /CRender {F} ddef
  11010.     }ifelse
  11011. } def
  11012. /f                    % - f -
  11013. {
  11014. closepath
  11015. F
  11016. } def
  11017. /S                    % - S -
  11018. {
  11019. _pola 0 eq 
  11020.     {
  11021.     _doClip 1 eq 
  11022.         {
  11023.         gsave _ps grestore clip newpath /_lp /none ddef _sc 
  11024.         /_doClip 0 ddef
  11025.         }
  11026.         {
  11027.         _ps
  11028.         }ifelse
  11029.     } 
  11030.     {
  11031.     /CRender {S} ddef
  11032.     }ifelse
  11033. } def
  11034. /s                    % - s -
  11035. {
  11036. closepath
  11037. S
  11038. } def
  11039. /B                    % - B -
  11040. {
  11041. _pola 0 eq 
  11042.     {
  11043.     _doClip 1 eq     % F clears _doClip
  11044.     gsave F grestore 
  11045.         {
  11046.         gsave S grestore clip newpath /_lp /none ddef _sc
  11047.         /_doClip 0 ddef
  11048.         } 
  11049.         {
  11050.         S
  11051.         }ifelse
  11052.     }
  11053.     {
  11054.     /CRender {B} ddef
  11055.     }ifelse
  11056. } def
  11057. /b                    % - b -
  11058. {
  11059. closepath
  11060. B
  11061. } def
  11062. /W                    % - W -
  11063. {
  11064. /_doClip 1 ddef
  11065. } def
  11066. /*                    % - [string] * -
  11067. {
  11068. count 0 ne 
  11069.     {
  11070.     dup type (stringtype) eq {pop} if
  11071.     } if 
  11072. _pola 0 eq {newpath} if
  11073. } def
  11074. % group operators
  11075. /u                    % - u -
  11076. {} def
  11077. /U                    % - U -
  11078. {} def
  11079. /q                    % - q -
  11080. {
  11081. _pola 0 eq {gsave} if
  11082. } def
  11083. /Q                    % - Q -
  11084. {
  11085. _pola 0 eq {grestore} if
  11086. } def
  11087. /*u                    % - *u -
  11088. {
  11089. _pola 1 add /_pola exch ddef
  11090. } def
  11091. /*U                    % - *U -
  11092. {
  11093. _pola 1 sub /_pola exch ddef 
  11094. _pola 0 eq {CRender} if
  11095. } def
  11096. /D                    % polarized D -
  11097. {pop} def
  11098. /*w                    % - *w -
  11099. {} def
  11100. /*W                    % - *W -
  11101. {} def
  11102. % place operators
  11103. /`                    % matrix llx lly urx ury string ` -
  11104. {
  11105. /_i save ddef
  11106. 6 1 roll 4 npop
  11107. concat pop
  11108. userdict begin
  11109. /showpage {} def
  11110. 0 setgray
  11111. 0 setlinecap
  11112. 1 setlinewidth
  11113. 0 setlinejoin
  11114. 10 setmiterlimit
  11115. [] 0 setdash
  11116. newpath
  11117. 0 setgray
  11118. false setoverprint
  11119. } def
  11120. /~                    % - ~ -
  11121. {
  11122. end
  11123. _i restore
  11124. } def
  11125. % color operators
  11126. /O                    % flag O -
  11127. {
  11128. 0 ne
  11129. /_of exch ddef
  11130. /_lp /none ddef
  11131. } def
  11132. /R                    % flag R -
  11133. {
  11134. 0 ne
  11135. /_os exch ddef
  11136. /_lp /none ddef
  11137. } def
  11138. /g                    % gray g -
  11139. {
  11140. /_gf exch ddef
  11141. /_fc
  11142. _lp /fill ne
  11143.     {
  11144.     _of setoverprint
  11145.     _gf setgray
  11146.     /_lp /fill ddef
  11147.     } if
  11148. } ddef
  11149. /_pf
  11150. {
  11151. _fc
  11152. fill
  11153. } ddef
  11154. /_psf
  11155. {
  11156. _fc
  11157. ashow
  11158. } ddef
  11159. /_pjsf
  11160. {
  11161. _fc
  11162. awidthshow
  11163. } ddef
  11164. /_lp /none ddef
  11165. } def
  11166. /G                    % gray G -
  11167. {
  11168. /_gs exch ddef
  11169. /_sc
  11170. {
  11171. _lp /stroke ne
  11172.     {
  11173.     _os setoverprint
  11174.     _gs setgray
  11175.     /_lp /stroke ddef
  11176.     } if
  11177. } ddef
  11178. /_ps
  11179. {
  11180. _sc
  11181. stroke
  11182. } ddef
  11183. /_pss
  11184. {
  11185. _sc
  11186. ss
  11187. } ddef
  11188. /_pjss
  11189. {
  11190. _sc
  11191. jss
  11192. } ddef
  11193. /_lp /none ddef
  11194. } def
  11195. /k                    % cyan magenta yellow black k -
  11196. {
  11197. _cf astore pop
  11198. /_fc
  11199. {
  11200. _lp /fill ne
  11201.     {
  11202.     _of setoverprint
  11203.     _cf aload pop setcmykcolor
  11204.     /_lp /fill ddef
  11205.     } if
  11206. } ddef
  11207. /_pf
  11208. {
  11209. _fc
  11210. fill
  11211. } ddef
  11212. /_psf
  11213. {
  11214. _fc
  11215. ashow
  11216. } ddef
  11217. /_pjsf
  11218. {
  11219. _fc
  11220. awidthshow
  11221. } ddef
  11222. /_lp /none ddef
  11223. } def
  11224. /K                    % cyan magenta yellow black K -
  11225. {
  11226. _cs astore pop
  11227. /_sc
  11228. {
  11229. _lp /stroke ne
  11230.     {
  11231.     _os setoverprint
  11232.     _cs aload pop setcmykcolor
  11233.     /_lp /stroke ddef
  11234.     } if
  11235. } ddef
  11236. /_ps
  11237. {
  11238. _sc
  11239. stroke
  11240. } ddef
  11241. /_pss
  11242. {
  11243. _sc
  11244. ss
  11245. } ddef
  11246. /_pjss
  11247. {
  11248. _sc
  11249. jss
  11250. } ddef
  11251. /_lp /none ddef
  11252. } def
  11253. /x                    % cyan magenta yellow black name gray x -
  11254. {
  11255. /_gf exch ddef
  11256. findcmykcustomcolor
  11257. /_if exch ddef
  11258. /_fc
  11259. _lp /fill ne
  11260.     {
  11261.     _of setoverprint
  11262.     _if _gf 1 exch sub setcustomcolor
  11263.     /_lp /fill ddef
  11264.     } if
  11265. } ddef
  11266. /_pf
  11267. {
  11268. _fc
  11269. fill
  11270. } ddef
  11271. /_psf
  11272. {
  11273. _fc
  11274. ashow
  11275. } ddef
  11276. /_pjsf
  11277. {
  11278. _fc
  11279. awidthshow
  11280. } ddef
  11281. /_lp /none ddef
  11282. } def
  11283. /X                    % cyan magenta yellow black name gray X -
  11284. {
  11285. /_gs exch ddef
  11286. findcmykcustomcolor
  11287. /_is exch ddef
  11288. /_sc
  11289. {
  11290. _lp /stroke ne
  11291.     {
  11292.     _os setoverprint
  11293.     _is _gs 1 exch sub setcustomcolor
  11294.     /_lp /stroke ddef
  11295.     } if
  11296. } ddef
  11297. /_ps
  11298. {
  11299. _sc
  11300. stroke
  11301. } ddef
  11302. /_pss
  11303. {
  11304. _sc
  11305. ss
  11306. } ddef
  11307. /_pjss
  11308. {
  11309. _sc
  11310. jss
  11311. } ddef
  11312. /_lp /none ddef
  11313. } def
  11314. % locked object operator
  11315. /A                    % value A -
  11316. {
  11317. pop
  11318. } def
  11319. currentdict readonly pop end
  11320. setpacking
  11321. % annotate page operator
  11322. /annotatepage
  11323. {
  11324. } def
  11325. %%EndResource
  11326. %%EndProlog
  11327. %%BeginSetup
  11328. %%IncludeFont: Helvetica
  11329. Adobe_cmykcolor /initialize get exec
  11330. Adobe_cshow /initialize get exec
  11331. Adobe_customcolor /initialize get exec
  11332. Adobe_typography_AI3 /initialize get exec
  11333. Adobe_IllustratorA_AI3 /initialize get exec
  11334. [
  11335. 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis
  11336. /Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute
  11337. /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde
  11338. /oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex
  11339. /udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
  11340. /registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
  11341. /.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
  11342. /.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
  11343. /questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef
  11344. /guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe
  11345. /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide
  11346. /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright
  11347. /fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
  11348. /Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex
  11349. /Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex
  11350. /Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla
  11351. /hungarumlaut/ogonek/caron
  11352. TE
  11353. %AI3_BeginEncoding: _Helvetica Helvetica
  11354. [/_Helvetica/Helvetica 0 0 1 TZ
  11355. %AI3_EndEncoding TrueType
  11356. %%EndSetup
  11357. 0 A
  11358. u
  11359. 0 O
  11360. 0 g
  11361. 0 i 0 J 0 j 1 w 4 M []0 d
  11362. %AI3_Note:
  11363. 0 D
  11364. 337.2661 550.0119 m
  11365. 337.2661 568.0119 L
  11366. 265.2661 568.0119 L
  11367. 265.2661 550.0119 L
  11368. 337.2661 550.0119 L
  11369. f
  11370. 0 0.1 0 0 k
  11371. 0 R
  11372. 0 G
  11373. 0.75 w
  11374. 335.0161 552.2619 m
  11375. 335.0161 570.2619 L
  11376. 263.0161 570.2619 L
  11377. 263.0161 552.2619 L
  11378. 335.0161 552.2619 L
  11379. b
  11380. U
  11381. u
  11382. 0 g
  11383. 1 w
  11384. 337.2661 523.0119 m
  11385. 337.2661 541.0119 L
  11386. 265.2661 541.0119 L
  11387. 265.2661 523.0119 L
  11388. 337.2661 523.0119 L
  11389. f
  11390. 0 0.1 0 0 k
  11391. 0 R
  11392. 0 G
  11393. 0.75 w
  11394. 335.0161 525.2619 m
  11395. 335.0161 543.2619 L
  11396. 263.0161 543.2619 L
  11397. 263.0161 525.2619 L
  11398. 335.0161 525.2619 L
  11399. b
  11400. U
  11401. u
  11402. 0 g
  11403. 1 w
  11404. 337.2661 496.0119 m
  11405. 337.2661 514.0119 L
  11406. 265.2661 514.0119 L
  11407. 265.2661 496.0119 L
  11408. 337.2661 496.0119 L
  11409. f
  11410. 0 0.1 0 0 k
  11411. 0 R
  11412. 0 G
  11413. 0.75 w
  11414. 335.0161 498.2619 m
  11415. 335.0161 516.2619 L
  11416. 263.0161 516.2619 L
  11417. 263.0161 498.2619 L
  11418. 335.0161 498.2619 L
  11419. b
  11420. U
  11421. u
  11422. 0 g
  11423. 1 w
  11424. 337.2661 469.0119 m
  11425. 337.2661 487.0119 L
  11426. 265.2661 487.0119 L
  11427. 265.2661 469.0119 L
  11428. 337.2661 469.0119 L
  11429. f
  11430. 0 0.1 0 0 k
  11431. 0 R
  11432. 0 G
  11433. 0.75 w
  11434. 335.0161 471.2619 m
  11435. 335.0161 489.2619 L
  11436. 263.0161 489.2619 L
  11437. 263.0161 471.2619 L
  11438. 335.0161 471.2619 L
  11439. b
  11440. U
  11441. u
  11442. 0 g
  11443. 1 w
  11444. 337.2661 442.0119 m
  11445. 337.2661 460.0119 L
  11446. 265.2661 460.0119 L
  11447. 265.2661 442.0119 L
  11448. 337.2661 442.0119 L
  11449. f
  11450. 0 0.1 0 0 k
  11451. 0 R
  11452. 0 G
  11453. 0.75 w
  11454. 335.0161 444.2619 m
  11455. 335.0161 462.2619 L
  11456. 263.0161 462.2619 L
  11457. 263.0161 444.2619 L
  11458. 335.0161 444.2619 L
  11459. b
  11460. U
  11461. u
  11462. 0 g
  11463. 1 w
  11464. 337.2661 415.0119 m
  11465. 337.2661 433.0119 L
  11466. 265.2661 433.0119 L
  11467. 265.2661 415.0119 L
  11468. 337.2661 415.0119 L
  11469. f
  11470. 0 0.1 0 0 k
  11471. 0 R
  11472. 0 G
  11473. 0.75 w
  11474. 335.0161 417.2619 m
  11475. 335.0161 435.2619 L
  11476. 263.0161 435.2619 L
  11477. 263.0161 417.2619 L
  11478. 335.0161 417.2619 L
  11479. b
  11480. U
  11481. u
  11482. 0 g
  11483. 1 w
  11484. 337.2661 388.0119 m
  11485. 337.2661 406.0119 L
  11486. 265.2661 406.0119 L
  11487. 265.2661 388.0119 L
  11488. 337.2661 388.0119 L
  11489. f
  11490. 0 0.1 0 0 k
  11491. 0 R
  11492. 0 G
  11493. 0.75 w
  11494. 335.0161 390.2619 m
  11495. 335.0161 408.2619 L
  11496. 263.0161 408.2619 L
  11497. 263.0161 390.2619 L
  11498. 335.0161 390.2619 L
  11499. b
  11500. U
  11501. u
  11502. 0 g
  11503. 1 w
  11504. 337.2661 361.0119 m
  11505. 337.2661 379.0119 L
  11506. 265.2661 379.0119 L
  11507. 265.2661 361.0119 L
  11508. 337.2661 361.0119 L
  11509. f
  11510. 0 0.1 0 0 k
  11511. 0 R
  11512. 0 G
  11513. 0.75 w
  11514. 335.0161 363.2619 m
  11515. 335.0161 381.2619 L
  11516. 263.0161 381.26°¿˙19 L
  11517. 263.0161 363.2619 L
  11518. 335.0161 363.2619 L
  11519. b
  11520. U
  11521. u
  11522. 0 g
  11523. 1 w
  11524. 337.2661 334.0119 m
  11525. 337.2661 352.0119 L
  11526. 265.2661 352.0119 L
  11527. 265.2661 334.0119 L
  11528. 337.2661 334.0119 L
  11529. f
  11530. 0 0.1 0 0 k
  11531. 0 R
  11532. 0 G
  11533. 0.75 w
  11534. 335.0161 336.2619 m
  11535. 335.0161 354.2619 L
  11536. 263.0161 354.2619 L
  11537. 263.0161 336.2619 L
  11538. 335.0161 336.2619 L
  11539. b
  11540. U
  11541. u
  11542. 0 g
  11543. 1 w
  11544. 337.2661 307.0119 m
  11545. 337.2661 325.0119 L
  11546. 265.2661 325.0119 L
  11547. 265.2661 307.0119 L
  11548. 337.2661 307.0119 L
  11549. f
  11550. 0 0.1 0 0 k
  11551. 0 R
  11552. 0 G
  11553. 0.75 w
  11554. 335.0161 309.2619 m
  11555. 335.0161 327.2619 L
  11556. 263.0161 327.2619 L
  11557. 263.0161 309.2619 L
  11558. 335.0161 309.2619 L
  11559. b
  11560. U
  11561. u
  11562. 0 g
  11563. 1 w
  11564. 337.2661 280.0119 m
  11565. 337.2661 298.0119 L
  11566. 265.2661 298.0119 L
  11567. 265.2661 280.0119 L
  11568. 337.2661 280.0119 L
  11569. f
  11570. 0 0.1 0 0 k
  11571. 0 R
  11572. 0 G
  11573. 0.75 w
  11574. 335.0161 282.2619 m
  11575. 335.0161 300.2619 L
  11576. 263.0161 300.2619 L
  11577. 263.0161 282.2619 L
  11578. 335.0161 282.2619 L
  11579. b
  11580. U
  11581. u
  11582. 0 g
  11583. 1 w
  11584. 337.2661 253.0119 m
  11585. 337.2661 271.0119 L
  11586. 265.2661 271.0119 L
  11587. 265.2661 253.0119 L
  11588. 337.2661 253.0119 L
  11589. f
  11590. 0 0.1 0 0 k
  11591. 0 R
  11592. 0 G
  11593. 0.75 w
  11594. 335.0161 255.2619 m
  11595. 335.0161 273.2619 L
  11596. 263.0161 273.2619 L
  11597. 263.0161 255.2619 L
  11598. 335.0161 255.2619 L
  11599. b
  11600. U
  11601. u
  11602. 0 g
  11603. 1 w
  11604. 337.2661 226.0119 m
  11605. 337.2661 244.0119 L
  11606. 265.2661 244.0119 L
  11607. 265.2661 226.0119 L
  11608. 337.2661 226.0119 L
  11609. f
  11610. 0 0.1 0 0 k
  11611. 0 R
  11612. 0 G
  11613. 0.75 w
  11614. 335.0161 228.2619 m
  11615. 335.0161 246.2619 L
  11616. 263.0161 246.2619 L
  11617. 263.0161 228.2619 L
  11618. 335.0161 228.2619 L
  11619. b
  11620. U
  11621. 0 To
  11622. 1 0 0 1 297.5161 558.7619 0 Tp
  11623. TP
  11624. -10.417 0 Td
  11625. 0 Tr
  11626. 0 g
  11627. 1 w
  11628. /_Helvetica 8 Tf
  11629. 0 Ts
  11630. 100 Tz
  11631. 0 Tt
  11632. 0 TA
  11633. 0 0 5 TC
  11634. 100 100 200 TW
  11635. 0 0 0 Ti
  11636. 1 Ta
  11637. 0 Tq
  11638. 13.55 0 Tl
  11639. 0 Tc
  11640. 0 Tw
  11641. ('math') Tx
  11642. (\r) TX 
  11643. 10.417 -13.55 Td
  11644. (\r) TX 
  11645. -8.1953 -13.55 Td
  11646. ('      ') Tx
  11647. (\r) TX 
  11648. 8.1953 -13.55 Td
  11649. (\r) TX 
  11650. -9.0859 -13.55 Td
  11651. ('appl') Tx
  11652. (\r) TX 
  11653. 9.0859 -13.55 Td
  11654. (\r) TX 
  11655. -20.0127 -13.55 Td
  11656. ($00000000) Tx
  11657. (\r) TX 
  11658. 20.0127 -13.55 Td
  11659. (\r) TX 
  11660. -20.0127 -13.55 Td
  11661. ($00000000) Tx
  11662. (\r) TX 
  11663. 20.0127 -13.55 Td
  11664. (\r) TX 
  11665. -13.082 -13.55 Td
  11666. ('CODE') Tx
  11667. (\r) TX 
  11668. 13.082 -13.55 Td
  11669. (\r) TX 
  11670. -11.1182 -13.55 Td
  11671. ($0080) Tx
  11672. (\r) TX 
  11673. 11.1182 -13.55 Td
  11674. (\r) TX 
  11675. -10.6377 -13.55 Td
  11676. ('STR ') Tx
  11677. (\r) TX 
  11678. 10.6377 -13.55 Td
  11679. (\r) TX 
  11680. -11.1182 -13.55 Td
  11681. ($0080) Tx
  11682. (\r) TX 
  11683. 11.1182 -13.55 Td
  11684. (\r) TX 
  11685. -10.6377 -13.55 Td
  11686. ('STR ') Tx
  11687. (\r) TX 
  11688. 10.6377 -13.55 Td
  11689. (\r) TX 
  11690. -11.1182 -13.55 Td
  11691. ($0081) Tx
  11692. (\r) TX 
  11693. 11.1182 -13.55 Td
  11694. (\r) TX 
  11695. -10.6377 -13.55 Td
  11696. ('ICN#') Tx
  11697. (\r) TX 
  11698. 10.6377 -13.55 Td
  11699. (\r) TX 
  11700. -11.1182 -13.55 Td
  11701. ($0080) Tx 
  11702. (\r) TX 
  11703. TO
  11704. 0 To
  11705. 1 0 0 1 253.0347 558.7475 0 Tp
  11706. TP
  11707. -57.3496 0 Td
  11708. 0 Tr
  11709. 2 Ta
  11710. (componentType) Tx
  11711. (\r) TX 
  11712. 57.3496 -13.55 Td
  11713. (\r) TX 
  11714. -71.5801 -13.55 Td
  11715. (componentSubType) Tx
  11716. (\r) TX 
  11717. 71.5801 -13.55 Td
  11718. (\r) TX 
  11719. -86.6836 -13.55 Td
  11720. (componentManufacturer) Tx
  11721. (\r) TX 
  11722. 86.6836 -13.55 Td
  11723. (\r) TX 
  11724. -59.125 -13.55 Td
  11725. (componentFlags) Tx
  11726. (\r) TX 
  11727. 59.125 -13.55 Td
  11728. (\r) TX 
  11729. -78.2344 -13.55 Td
  11730. (componentFlagsMask) Tx
  11731. (\r) TX 
  11732. 78.2344 -13.55 Td
  11733. (\r) TX 
  11734. -90.6855 -13.55 Td
  11735. (component rsrcSpec type) Tx
  11736. (\r) TX 
  11737. 90.6855 -13.55 Td
  11738. (\r) TX 
  11739. -83.5664 -13.55 Td
  11740. (component rsrcSpec ID) Tx
  11741. (\r) TX 
  11742. 83.5664 -13.55 Td
  11743. (\r) TX 
  11744. -112.0176 -13.55 Td
  11745. (componentName rsrcSpec type) Tx
  11746. (\r) TX 
  11747. 112.0176 -13.55 Td
  11748. (\r) TX 
  11749. -104.8984 -13.55 Td
  11750. (componentName rsrcSpec ID) Tx
  11751. (\r) TX 
  11752. 104.8984 -13.55 Td
  11753. (\r) TX 
  11754. -104.0254 -13.55 Td
  11755. (componentInfo rsrcSpec type) Tx
  11756. (\r) TX 
  11757. 104.0254 -13.55 Td
  11758. (\r) TX 
  11759. -96.9062 -13.55 Td
  11760. (componentInfo rsrcSpec ID) Tx
  11761. (\r) TX 
  11762. 96.9062 -13.55 Td
  11763. (\r) TX 
  11764. -105.8027 -13.55 Td
  11765. (componentIcon rsrcSpec type) Tx
  11766. (\r) TX 
  11767. 105.8027 -13.55 Td
  11768. (\r) TX 
  11769. -98.6836 -13.55 Td
  11770. (componentIcon rsrcSpec ID) Tx
  11771. (\r) TX 
  11772. 98.6836 -13.55 Td
  11773. (\r) TX 
  11774. TO
  11775. 0 R
  11776. 0 G
  11777. 0.5 w
  11778. 339.5161 561.2619 m
  11779. 353.0161 561.2619 l
  11780. 353.0161 453.2619 l
  11781. 339.5161 453.2619 l
  11782. S
  11783. 353.5161 507.2619 m
  11784. 366.5161 507.2619 l
  11785. S
  11786. u
  11787. 338.7661 425.5119 m
  11788. 352.2661 425.5119 l
  11789. 352.2661 398.5119 l
  11790. 338.7661 398.5119 l
  11791. S
  11792. 352.2661 412.0119 m
  11793. 365.2661 412.0119 l
  11794. S
  11795. U
  11796. u
  11797. 339.5161 370.2619 m
  11798. 353.0161 370.2619 l
  11799. 353.0161 343.2619 l
  11800. 339.5161 343.2619 l
  11801. S
  11802. 353.0161 356.7619 m
  11803. 366.0161 356.7619 l
  11804. S
  11805. U
  11806. u
  11807. 339.5161 315.2619 m
  11808. 353.0161 315.2619 l
  11809. 353.0161 288.2619 l
  11810. 339.5161 288.2619 l
  11811. S
  11812. 353.0161 301.7619 m
  11813. 366.0161 301.7619 l
  11814. S
  11815. U
  11816. u
  11817. 339.5161 261.7619 m
  11818. 353.0161 261.7619 l
  11819. 353.0161 234.7619 l
  11820. 339.5161 234.7619 l
  11821. S
  11822. 353.0161 248.2619 m
  11823. 366.0161 248.2619 l
  11824. S
  11825. U
  11826. 0 To
  11827. 1 0 0 1 375.5161 503.7619 0 Tp
  11828. TP
  11829. 0 Tr
  11830. 0 O
  11831. 0 g
  11832. 1 w
  11833. 0 Ta
  11834. (Component description) Tx
  11835. (\r) TX 
  11836. T*
  11837. (\r) TX 
  11838. T*
  11839. (\r) TX 
  11840. T*
  11841. (\r) TX 
  11842. T*
  11843. (\r) TX 
  11844. T*
  11845. (\r) TX 
  11846. T*
  11847. (\r) TX 
  11848. T*
  11849. (Component code resource) Tx
  11850. (\r) TX 
  11851. T*
  11852. (\r) TX 
  11853. T*
  11854. (\r) TX 
  11855. T*
  11856. (\r) TX 
  11857. T*
  11858. ("Math Component") Tx
  11859. (\r) TX 
  11860. T*
  11861. (\r) TX 
  11862. T*
  11863. (\r) TX 
  11864. T*
  11865. (\r) TX 
  11866. T*
  11867. ("This component provides) Tx
  11868. (\r) TX 
  11869. 0 -9 Td
  11870. 9 0 Tl
  11871. (simple math services.") Tx
  11872. (\r) TX 
  11873. T*
  11874. (\r) TX 
  11875. T*
  11876. (\r) TX 
  11877. TO
  11878. u
  11879. u
  11880. 0 R
  11881. 0 G
  11882. 2 j 0.5 w
  11883. 397.7613 241.0167 m
  11884. 397.7613 255.6569 L
  11885. 381.6811 255.6569 L
  11886. 381.6811 241.0167 L
  11887. 397.7613 241.0167 L
  11888. s
  11889. 0 j 2 w
  11890. 389.7212 248.3368 m
  11891. S
  11892. U
  11893. 0 O
  11894. 0 g
  11895. 1 w
  11896. 397.7613 255.6569 m
  11897. 398.7513 254.6669 l
  11898. 398.7513 239.6967 l
  11899. 383.0011 239.6967 l
  11900. 381.6811 241.0167 l
  11901. 397.7613 241.0167 l
  11902. 397.7613 255.6569 l
  11903. f
  11904. 378.141 251.1569 m
  11905. 378.141 249.5369 l
  11906. 375.501 249.5369 l
  11907. 375.501 246.2968 l
  11908. 378.141 246.2968 l
  11909. 378.141 244.6768 l
  11910. 381.5311 247.9468 l
  11911. 378.141 251.1569 l
  11912. f
  11913. 401.4064 251.1569 m
  11914. 401.4064 249.5369 l
  11915. 398.7663 249.5369 l
  11916. 398.7663 246.2968 l
  11917. 401.4064 246.2968 l
  11918. 401.4064 244.6768 l
  11919. 404.7964 247.9468 l
  11920. 401.4064 251.1569 l
  11921. f
  11922. 393.2013 259.332 m
  11923. 390.5612 259.332 l
  11924. 390.5612 261.972 l
  11925. 389.4812 261.972 l
  11926. 389.4812 259.332 l
  11927. 386.7212 259.332 l
  11928. 389.9912 255.9419 l
  11929. 393.2013 259.332 l
  11930. f
  11931. 390.7078 242.8996 m
  11932. 388.7456 242.8996 l
  11933. 388.7456 251.2891 L
  11934. 387.2226 251.2891 L
  11935. 385.7308 251.2891 385.7173 251.58 385.5157 250.0612 c
  11936. 384.5346 250.0612 L
  11937. 384.5346 252.4804 L
  11938. 394.7838 252.4804 L
  11939. 394.7838 250.0612 L
  11940. 393.8027 250.0612 L
  11941. 393.6011 251.58 393.5876 251.2891 392.0958 251.2891 c
  11942. 390.7078 251.2891 L
  11943. 390.7078 242.8996 L
  11944. F
  11945. U
  11946. %%PageTrailer
  11947. gsave annotatepage grestore showpage
  11948. %%Trailer
  11949. Adobe_IllustratorA_AI3 /terminate get exec
  11950. Adobe_typography_AI3 /terminate get exec
  11951. Adobe_customcolor /terminate get exec
  11952. Adobe_cshow /terminate get exec
  11953. Adobe_cmykcolor /terminate get exec
  11954. Adobe_packedarray /terminate get exec
  11955. %%EOF
  11956. V◊#ˇ ˇˇˇˇ#◊ 
  11957. d, Palatino
  11958. .°dONLNd$ñ0+¥LOAn application can also register a component itself using the Component Manager°dONLNdP0ñ<·* Gcall RegisterComponent or RegisterComponentResource. As we’ll see, this°dONLNdò<ñH¿* Aregistration method facilitates symbolic debugging of components.,     Helvetica
  11959.     °dONLNd€Uñ`7*!Global versus local registration.°dONLNd¸U7`:)° 
  11960. °dONLNd˝T:`Î)'Components can be registered locally or°dONLNd%`ñl(à¥Sglobally. A component that’s registered locally is visible only within the A5 world°dONLNdylñx* Qin which it’s registered, whereas a globally registered component is available to°dONLNdÀxñÑ* Sall potential client applications. Typically, you register a component locally only°dONLNdÑñêî* <if you want to restrict its use to a particular application.
  11961. °dONLNd\°ñØ[*A SIMPLE MATH COMPONENT
  11962. °dONLNdu≥ñø¸*NTo help you understand how to write a component, we’re going to go through the°dONLNdƒøñÀ
  11963. * Owhole process with an example — in this case, a simple math component. We start°dONLNdÀñ◊* Nby contacting the Apple Component Registry group, and to our astonishment (and°dONLNdc◊ñ„
  11964. * Qtheir bemusement), we find that there are no registered components that do simple°dONLNdµ„ñÔ* Nmath! We assume for the moment that the arithmetic operators in our high-level°dONLNdÔñ˚˛* Mprogramming language are unavailable and that our application is in desperate°dONLNdR˚ñ* 4need of integer division and multiplication support.°dONLNdáñ÷*DWe create a component called Math that performs integer division and°dONLNdÃñ+‹* multiplication.
  11965.     °dONLNd‹<ñGb*!THE FUNCTION PROTOTYPE DEFINITION
  11966. °dONLNd˛GñS* RWe need to define function prototypes for each of the calls in our component API —°dONLNdQSñ_Ù* Hnamely, DoDivide and DoMultiply. The function prototype for the DoDivide°dONLNdö_ñk‰* Fcomponent call can be found in MathComponent.h and is shown below. The°dONLNd·kñw|* 3declaration for the DoMultiply function is similar.,
  11967. Courier
  11968.     °dONLNdÑñè¬*<pascal ComponentResult DoDivide (MathComponent mathInstance,°dONLNdTê§õ®+ 4short numerator, short denominator, short *result) =°dONLNdãú§ßq* )ComponentCallNow (kDoDivideSelect, 0x08);
  11969. °dONLNdµ≥ñøfl(€¥GThis resembles a normal C language function prototype with a relatively°dONLNd˝øñÀ˚* Kstraightforward parameter list. The mathInstance parameter is the component°dONLNdIÀñ◊* Oinstance through which the application accesses the component; we’ll see how an°dONLNdô◊ñ„* Rapplication gets one of these instances in a moment. The numerator and denominator°dONLNdÏ„ñÔˇ* Oparameters are self-explanatory and are passed in by the calling application as°dONLNd<Ôñ˚ı* Owell. The contents of the last parameter, result, are filled in by the DoDivide°dONLNdå˚ñ* function upon completion.°dONLNd¶ñ¯*KThose of you who have a passing familiarity with C are probably more than a°dONLNdÚñ+¸* Olittle curious about the last portion of the declaration. ComponentCallNow is a°dONLNd    B+ñ7˚* Hmacro defined by the Component Manager (see “Inside the ComponentCallNow°dONLNd    ã7ñCÏ* MMacro” for the nuts and bolts of how the macro works). Its main purpose is to°dONLNd    ŸCñOƒ*
  11970. identify a xBx/,Times
  11971. ({& 
  11972. +
  11973. 16
  11974. 4ìq·3
  11975. +md)e)v)e)l)o)p)  
  11976. )
  11977. December 1992ˇ∞◊#ˇ ˇˇˇˇ#◊ 
  11978. d,     Helvetica
  11979. .°dONLNd !.B+?I!INSIDE THE COMPONENTCALLNOW MACRO"62# 636("6)#"72"7)
  11980.     °dONLNd#7!B·*-Some of you may be wondering exactly what the°dONLNdQC!NÍ* .ComponentCallNow macro does. Let’s expand this°dONLNdÄO!Z* 7macro for our DoDivide component call and examine it in°dONLNd∏[!f:* detail.,
  11981. Courier°dONLNd¡s&~Û+)= {0x2F3C, 0x08, kDoDivideSelect, 0x7000,°dONLNdÌ5ä]+ 0xA82A};°dONLNdˆí!ù(π?7The first element, 0x2F3C, is the Motorola 68000 opcode°dONLNd.ù!®* ;for a move instruction. Execution of this instruction loads°dONLNdj®!≥* 9the contents of the next two elements onto the stack. The°dONLNd§≥!æ* 8next element, 0x08, is the amount of stack space that we°dONLNd›æ!…˘* 6calculated for the function parameters of the DoDivide°dONLNd…!‘˝* 8call. The third element, kDoDivideSelect, is the request°dONLNdO:EÍ(a;3code corresponding to the DoDivide call. The fourth°dONLNdÉEPÙ* 4element, 0x7000, is the Motorola 68000 opcode for an°dONLNd∏P[* ;instruction that sets the contents of register D0 to 0. The°dONLNdÙ[f‰* 0Component Manager interprets this condition as a°dONLNd%fq˙* 7request to call your component rather than handling the°dONLNd]q|˘* 7request itself. The last element, 0xA82A, is the opcode°dONLNdï|á˝* 8for an instruction that executes a trap to the Component°dONLNdŒáíC* Manager.°dONLNd◊û©*4While you can use this inline code in your component°dONLNd ©¥ˆ* 5function declarations directly, we recommend that you°dONLNdB¥øÚ* 0use the ComponentCallNow macro to make your code°dONLNdsø W* more portable.
  11982. 4Ë-˛) L2˝2"˛2# ˛3˛,"˛- ˛.˛( L)˝)"˛)#, Palatino
  11983. °dONLNdÉÌ˘k(6Kroutine as a component function, as opposed to a normal C function. When an°dONLNdœ˘â* Rapplication calls the DoDivide function, the macro is executed. This causes a trap°dONLNd"ê* Oto the Component Manager to be executed, allowing the Component Manager to send°dONLNdr>* Aa message to the component responsible for handling the function.°dONLNdµ)5`*EThe first parameter to the ComponentCallNow macro is an integer value°dONLNd˚5Aí* Wrepresenting the request code for the integer division function. As noted earlier, your°dONLNdSAMà* Qcomponent’s dispatcher uses this request code to determine what function has been°dONLNd•MYi* Krequested. Recall that you may only define request codes that are positive.°dONLNdÒeqà*QThe second parameter is an integer value that indicates the amount of stack space°dONLNdDq}r* P(in bytes) that’s required by the function for its parameters, not including the°dONLNdï}ây* Mcomponent instance parameter. Be careful to note that Boolean and single-byte°dONLNd„âïâ* Rparameters may need to be passed as 16-bit integer values (see the section “Eleven°dONLNd6ï°ë* QCommon Mistakes” for details). For the Math component, the space required for the°dONLNdà°≠ä* UDoDivide function is two 16-bit integers followed by a 32-bit pointer, for a total of°dONLNdfi≠πN* eight bytes.
  11984.     °dONLNdΠ’‘*THE MATH COMPONENT DISPATCHER
  11985. °dONLNd        ’·â* PThe dispatcher of the Math component is shown in its entirety below. Notice that°dONLNd    Z·Ìz* Pthe dispatcher executes its component functions indirectly by calling one of two°dONLNd    ´Ì˘E* >Component Manager utility functions — CallComponentFunction or°dONLNd    Í˘à* ICallComponentFunctionWithStorage. You use CallComponentFunction when your°dONLNd
  11986. 4ë* Rcomponent function needs only the fields in the ComponentParameters structure, and°dONLNd
  11987. áv* ICallComponentFunctionWithStorage when it also needs access to the private°dONLNd
  11988. —)+* =storage that was allocated in your component’s open function. x4x&,Times
  11989. ({) 
  11990. +
  11991. 174ìÚ·Ø
  11992. (Ú*1TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  11993. )”
  11994. December 1992ˇ |◊#ˇ ˇˇˇˇ#◊ 
  11995. d,
  11996. Courier
  11997.     .°dONLNd%ñ0≥+¥L9pascal ComponentResult main (ComponentParameters *params,°dONLNdE15<Ä+ü Handle storage)°dONLNdU=ñHõ(d¥{°dONLNdXI§T⁄+ >// This routine is the main dispatcher for the Math component.°dONLNdòU§`?* ComponentResult result = noErr;°dONLNdªm§x≠*5// Did we get a Component Manager request code (< 0)?°dONLNdÚy§Ñ* if (params->what < 0) {°dONLNd Ö≥ê+ switch (params->what)°dONLNd$ë≥ú∏* {°dONLNd)ù¡®C+ case kComponentOpenSelect:°dONLNdFùo®∫)Æ// Open request°dONLNdZ©–¥˜(–Ó;result = CallComponentFunctionWithStorage (storage, params,°dONLNdûµ
  11998. ¿•+: (ComponentFunction) _MathOpen);°dONLNd¬¡–ÃÓ(ËÓbreak;°dONLNdÃÕ¡ÿH(Ùflcase kComponentCloseSelect:°dONLNdÍÕoÿø)Æ// Close request°dONLNdˇŸ–‰˜(Ó;result = CallComponentFunctionWithStorage (storage, params,°dONLNdCÂ
  11999. ™+:  (ComponentFunction) _MathClose);°dONLNdhÒ–¸Ó(Óbreak;°dONLNdr˝¡H($flcase kComponentCanDoSelect:°dONLNdê˝oƒ)Æ// Can do request°dONLNd¶    –ì(0Ó'result = CallComponentFunction (params,°dONLNd÷
  12000.  •+: ComponentFunction) _MathCanDo);°dONLNd˙!–,Ó(HÓbreak;°dONLNd-¡8R(Tflcase kComponentVersionSelect:°dONLNd#-o8…)Æ// Version request°dONLNd:9–Dì(`Ó'result = CallComponentFunction (params,°dONLNdjE
  12001. P¥+: "(ComponentFunction) _MathVersion);°dONLNdëQ–\Ó(xÓbreak;°dONLNdõ]¡hM(Ñflcase kComponentTargetSelect:°dONLNd∫]ohƒ)Æ// Target request°dONLNd–i–t˜(êÓ;result = CallComponentFunctionWithStorage (storage, params,°dONLNdu
  12002. ÄØ+: !(ComponentFunction) _MathTarget);°dONLNd:Å–åÓ(®Óbreak;°dONLNdDç¡òW(¥flcase kComponentRegisterSelect:°dONLNddçoòÁ)Æ// Register request not °dONLNdåôo§´* // supported°dONLNdú•¡∞È(Ãfldefault:°dONLNd≠•o∞…)Æ// Unknown request°dONLNdƒ±–º*(ÿÓresult = paramErr;°dONLNd€Ω–»Ó* break;°dONLNd‰…≥‘∏(—}°dONLNdÁ’§‡©(¸¬}°dONLNdÍ·§Ϭ* else {°dONLNd¸·oÏ˚)À// One of our request codes?°dONLNdÌ≥¯(—switch (params->what)°dONLNd3˘≥∏* {°dONLNd8¡*+ case kDoDivideSelect:°dONLNdRoƒ)Æ// Divide request°dONLNdh–ì(8Ó'result = CallComponentFunction (params,°dONLNdô
  12003. (π+: #(ComponentFunction) _MathDoDivide);°dONLNd¡)–4Ó(PÓbreak; xBx/,Times
  12004. ({& ,     Helvetica
  12005. +
  12006. 18
  12007. 4ìq·3
  12008. +md)e)v)e)l)o)p)  
  12009. )
  12010. December 1992ˇ Ù◊#ˇ ˇˇˇˇ#◊ 
  12011. d,
  12012. Courier
  12013.     .°dONLNdC$∂+a@case kDoMultiplySelect:°dONLNdÒ$P)Æ// Multiply request°dONLNd3%R0(Lp'result = CallComponentFunction (params,°dONLNdc1å<E+: %(ComponentFunction) _MathDoMultiply);°dONLNdç=RHp(dpbreak;°dONLNdóICTk(padefault:°dONLNd®IÒTK)Æ// Unknown request°dONLNdøUR`¨(|presult = paramErr;°dONLNd÷aRlp* break;°dONLNdflm5x:(îS}°dONLNd‚y&Ñ+(†D}°dONLNdÂÖ&êv* return (result);°dONLNdˆëú(∏6}, Palatino
  12014. °dONLNd¯®¥Ö*MA drawback of the dispatcher is the overhead incurred in having the Component°dONLNdF¥¿Ü* PManager functions mediate all your requests. To reduce your calling overhead and°dONLNdó¿ÃŒ* (thus improve performance, you can use a °dONLNdø¿ŒÃ )∂
  12015. fast dispatch°dONLNdÿ Ãr)= technique. While this°dONLNd„Ãÿ|(Ù6Qtechnique is used in most of the QuickTime 1.0 components, this is the first time°dONLNd5ÿ‰t* Mthat it’s been publicly described. See “Fast Component Dispatch” for details.,     Helvetica
  12016.     °dONLNdÑı‚* THE MATH COMPONENT DODIVIDE CALL
  12017. °dONLNd¶ X* EFor the Math component, the DoDivide function is declared as follows:
  12018.     °dONLNdÏ$Ö*Ipascal ComponentResult _MathDoDivide (short numerator, short denominator,°dONLNd6%0*  °dONLNdE%„03)Àshort* quotient)°dONLNdV1<(X6{°dONLNdY=&H¡+ ComponentResult result = noErr;°dONLNd|U&`ô*if (denominator != 0) {°dONLNdña5lfl+ "*quotient = numerator/denominator;°dONLNd∫m&x+(îD}°dONLNdæy&ÑD* else {°dONLNd«Ö5ê{+ *quotient = 0;°dONLNdÿë5úv*
  12019. result = -1L;°dONLNdÊë}ú)H// Divide by zero not allowed°dONLNdù&®+(ƒD}°dONLNd©&¥v* return (result);°dONLNdµ¿(‹6}
  12020. °dONLNdÃÿá*RThe key thing to note here is that component functions must always return a result°dONLNdnÿ‰à* Ucode. The return value is 32 bits and is defined in the API for the component. In our°dONLNdƒ‰â* Ucase, a value of 0 (noErr) indicates successful completion of the call and a negative°dONLNd¸d* Hvalue indicates that an abnormal completion occurred. Note that for some°dONLNdc¸t* Lcomponents a negative result code could indicate that the returned parameter°dONLNd∞è* Svalues should be interpreted in a particular manner. For example, a video digitizer°dONLNd å* Qmay return a negative result code of notExactSize from the VDSetDestination call.°dONLNdV ,í* VThis doesn’t indicate an error. It just means that the requested size wasn’t available°dONLNd≠,8Å* Son the digitizer and that the next closest size was given instead. Also, since this°dONLNd8DR* result code is x4x&,Times
  12021. ({) 
  12022. +
  12023. 19
  12024. 4ìÚ·Ø
  12025. (Ú*1TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  12026. )”
  12027. December 1992ˇ◊#ˇ ˇˇˇˇ#◊ 
  12028. d,     Helvetica
  12029. .°dONLNd %.Ì+CIFAST COMPONENT DISPATCH
  12030.     °dONLNd/%:à*
  12031. BY MARK KRUEGER"65# 666,"6-#"75("7-(°dONLNd+K%V˝*7If you’re concerned about the time it takes to dispatch°dONLNdcW%bÛ* 3calls made to your component, try the fast dispatch°dONLNdóc%nÍ* 0method. This method eliminates the need for your°dONLNd»o%zÛ* 1component to make the extra call to the Component°dONLNd˙{%Ü„* +Manager functions CallComponentFunction and°dONLNd&á%í* 4CallComponentFunctionWithStorage, and allows control°dONLNd[ì%û* <to pass directly back to the caller. It does this by calling°dONLNdòü%™˛* 6your component entry point with the call’s parameters,°dONLNdœ´%∂˜* 5the instance storage, and the caller’s return address°dONLNd∑%¬* 5already on the stack. It passes the component request°dONLNd;√%Œˇ* 8code in register D0, and points register A0 at the stack°dONLNdtœ%⁄‘* ,location where the instance storage is kept.°dONLNd¢„%Ó›*.To handle a fast dispatch, you must write your°dONLNd—Ô%˙¸* 3component entry point in assembly language. Use the°dONLNd˚%˚* 7request code in D0 as an index into a table of function°dONLNd=%p* addresses, paying°dONLNdQK V(r>8special attention to the negative request codes used for°dONLNdäW bÕ* )the standard Component Manager calls like°dONLNd¥c n˛* 2OpenComponent and CloseComponent. If the functions°dONLNdÁo z* :are defined correctly, the dispatcher can jump directly to°dONLNd"{ Ü˙* 6the function address. Note that the function parameter°dONLNdYá íˆ* 6the caller uses to specify the component instance will°dONLNdêì û‡* .instead be a handle to your component instance°dONLNdøü ™* 9storage. When the function completes, control will return°dONLNd˘´ ∂Ñ* to the calling application.°dONLNdø  Ë*0You need to tell the Component Manager that your°dONLNdGÀ ÷Ì* 2component has a fast dispatch handler instead of a°dONLNdz◊ ‚˝* 8normal dispatcher. To do this, set bit 30 ($40000000) of°dONLNd≥„ Ó˚* 4the componentFlags field of your component resource,°dONLNdËÔ ˙„* /and the Component Manager will always call your°dONLNd˚ Œ* )component using the fast dispatch method.
  12032. 4$1<- `5;5"<5# <6<0"<1 <2<, `-;-"<-#, Palatino
  12033. °dONLNdC+ñ7(S¥T32 bits, you could actually return pointers or handles as results, rather than error°dONLNdò7ñC±* codes.
  12034. °dONLNdüTñbf*USING THE MATH COMPONENT
  12035. °dONLNd∏fñr*RIn this section, we look at how an application uses the Math component. First, the°dONLNd rñ~* Mapplication has to ask the Component Manager to locate the Math component. If°dONLNdY~ñäı* Nthe Math component is found, the application can open it and make calls to it.
  12036.     °dONLNd®õñ¶Ü*&FINDING AND OPENING THE MATH COMPONENT
  12037. °dONLNdœ¶ñ≤ * OWe tell the Component Manager which component we’re looking for by sending it a°dONLNd≤ñæ * PComponentDescription record containing the type, subtype, and manufacturer codes°dONLNdpæñ ‹* Efor the desired component. We then call the Component Manager routine°dONLNd∂ ñ÷
  12038. * QFindNextComponent to locate a registered component that fits the description. The°dONLNd    ÷ñ‚X* )code fragment below shows how this looks.,
  12039. Courier
  12040.     °dONLNd    3Ôñ˙˙*ComponentDescription°dONLNd    IÔ˙E)Ç    mathDesc;°dONLNd    S˚ñ»("¥
  12041. Component °dONLNd    c˚h)ÇmathComponentID;°dONLNd    tñ'(:¥// Math component description°dONLNd    íñ*m* +mathDesc.componentType = mathComponentType;°dONLNd    æ+ñ61* mathDesc.componentSubType = 0L;°dONLNd    ‚+~6∫)Ë // Wild card xBx/,Times
  12042. ({& 
  12043. +
  12044. 204ìq·3
  12045. +md)e)v)e)l)o)p)  
  12046. )
  12047. December 1992ˇÙj◊#ˇ ˇˇˇˇ#◊ 
  12048. d,
  12049. Courier
  12050.     .°dONLNd$‡+6@(mathDesc.componentManufacturer = 'appl';°dONLNd)%0©* mathDesc.componentFlags = 0L;°dONLNdL%0<)Ë // Wild card°dONLNdY1<Ω(X6!mathDesc.componentFlagsMask = 0L;°dONLNd~1Ò<-)Ÿ // Wild card°dONLNdåITê(p6// Find a Math component°dONLNd•U`!* 5mathComponentID = FindNextComponent (nil, &mathDesc);, Palatino
  12051. °dONLNd€lx~*IThe zeros in the componentSubType, componentFlags, and componentFlagsMask°dONLNd%xÑ* Nfields indicate that they function as wild cards. If the Component Manager was°dONLNdtÑêR* Gunable to locate a component matching the description, it returns zero.°dONLNdΩú®É*KAssuming the Component Manager returned a nonzero component ID, we now open°dONLNd    ®¥* 9the component using the OpenComponent call, as follows: .
  12052.     °dONLNdC¡Ã*/mathInstance = OpenComponent (mathComponentID);
  12053. °dONLNdsÿ‰à*OOpenComponent returns a unique connection reference — a component instance — to°dONLNd√‰Ç* Pthe Math component. If the component instance is nonzero, we’re ready to use the°dONLNd¸@* Ccomponent. Figure 5 illustrates the process of finding a component.
  12054. 26SÎ"26°d
  12055. ONLNfH"Sΰd
  12056. ONLNf{j†Ç†é
  12057. 41526ò8@µ@µ26rÎ……Ë„¯<Ú¸ÙÛˇ¿¯ˇÛ˛ÙÛ@¯ˇÛˇÙÛ@˘ˇÛˇÙÛ@˘ˇÄÙˇÙÛ@˘ˇÄÙˇÙÛ@˘ˇÛˇÙÛ@¯ˇÛ˛ÙÛ@¯ˇÚ¸ÙÛ@¯<ÚÙÛ@    ⁄Û@    ⁄Û@    ⁄Û@    ⁄Û@#¯ 0ı‡˝ò¿ ˛p˝Ä˙@*¯^u3s8„"1˙>„qπò€åÏ«¨@ã>„qπÄ˙@*¯YMI¥®ëƒJ˙™î“hòŒá2É2ÄÑ™î“hÄ˙@*¯˘MF¥®ñ¢y˙™î”Ëïvõ>É>@Ñ™î”ËÄ˙@+¯âML¥®îë@Ä˚™î“(ïfì0É0 å™î“(Ä˙@)¯éu3≥(„¢1˘„*„Q®í^éÏÉ,@s*„Q®Ä˙@¯@˛Äıĸ ¸˛Ä˜@¯@˛Äıĸ¿¸˛Ä˜@    ⁄Û@*¯ 0˝¸Ä ¸@˛ P ˚@.¯
  12058. ÏFfispl3|Ês;˝ ò¯Ÿ∏`ÕÛçÃÏ\˛ÿÚyπúR`˚@.˘ 2âô4–îL‘ôT©¸
  12059. §®jh13RSR§T˛•40⁄TT ˚@.˘ >Hô4–îD‘ôW©¸
  12060. §©™(—RS^§T˛Ω23ZTR ˚@.˘ 0)ô4–îL‘ôT)¸
  12061. §©*hë3RSP§T˛°12ZTQ ˚@-¯
  12062. ÏFû3Pd3TÊS)¸
  12063. ò®È®pÕSçL§T˛òÚ1ŸîR ˚@ˆ¸ÄÙ˙ ˆ@ˆ¸ÄÙ˙¿ˆ@    ⁄Û@$˘ ˝@˚  ¿`˛Û@%˘    b≠Õ √ôÃ˚h6<ûmgò≠¯¿Û@%˘    "ßF!¶f R˚0)M 5猪i Û@%˘    "ªE&¢=R˚(/Lå’ïਖi‡Û@%˘    "≥DÖ$¶`àR˚ $(LLïïH¨–i˛Û@%˘    !OE√ôôL˚(&<åueàT–h¿Û@
  12064. ʈÛ@
  12065. Ê0ˆÛ@    ⁄Û@¯‡˛¿ı@ Ä@¿¸Û@'˘
  12066. |Ês;ÛòÌĸ
  12067. òÙƒÿ„ô]Õ¿˝ıˇ@&˘    ‘ôT©⁄ç3˚
  12068. %5(e$¶&R”@˝ıˇ@'˘    ‘ôW©jµ?˚ =5‰}$Ω"R”A¿˛ıˇ¿@'˘    ‘ôT)J•1˚ !5a$†¶R”@|˛ıˇ¿@'¯    „TÊS)zúÌ ¸¸ƒX„ô\ÕH‡ıˇ¿@ˆÄ¸ ˘ ¸˛?ıˇ¿@ˆÄ¸¿˘ ¸˛¯ıˇ¿@
  12069. ‹¿ıˇ¿@ €|ıˇ¿@ÙÈ‚ıˇ¿@ÙË?ıˇ¿@Ù˯ıˇ¿@ÙË ıˇ¿@ÙËıˇ¿@ÙËıˇ¿@ÙËıˇ¿@ÙËıˇ¿@ÙËıˇ¿@ÙËıˇ¿@ò8@ĵ@ĵr6≤ÎÙËıˇ¿@ÙËıˇ¿@ÙËıˇ¿@ÙËıˇ¿@ÙËıˇ¿@ÙËıˇ¿@ÙËıˇ¿@?˙ˇÄ˝˚˙ˇ˛ˆıˇ¿@?˙ˇÄ˝˚˙ˇ˛ˆıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜ıˇ¿@?˙ˇ‡˝˚˘ˇÄ˜?ˆˇ¿@?˙ˇ‡˝˚˘ˇÄ˜?ˆˇ¿@?˙ˇ‡˝˚˘ˇÄ˜Û@?˙ˇ‡˝˚˘ˇÄ˜Û@?˙ˇ‡˝˚˘ˇÄ˜Û@?˙ˇ‡˝˚˘ˇÄ˜Û@?˙ˇ‡˝˚˘ˇÄ˜Û@?˙ˇ‡ˆ˘ˇÄ˜Û@?˙ˇ‡ˆ˘ˇÄ˜Û@?˙ˇ‡ˆ˘ˇÄ˜Û@?˙ˇ‡ˆ˘ˇÄ˜Û@?˙ˇ‡ˆ˘ˇÄ˜Û@!?˙ˇ‡|1¸˘ˇį ¬˝Û@!?˙ˇ‡9ÄΔ}¸˘ˇÄ(„/çÚ˝Û@!?˙ˇ‡f@C4¸˘ˇÄ%îÄ
  12070. Ü–˝Û@!?˙ˇ‡g«ÖM4¸˘ˇÄ%óè
  12071. ö–˝Û@!?˙ˇ‡fÖI4¸˘ˇÄ%î
  12072. í–˝Û@!?˙ˇ‡πÄG4¸˘ˇÄ"„
  12073. é–˝Û@?˙ˇ‡†¯˘ˇÄĢÛ@?˙ˇ‡†¯˘ˇÄĢÛ@?˙ˇ‡ˆ˘ˇÄ˜Û@$?˙ˇ‡8ÄÄ@˛˘ˇÄpA˛Û@$?˙ˇ‡Fù£òÄ@˛˘ˇÄçsé`˛Û@?˙ˇ‡bíñd˙˘ˇÄ≈IYê˚ıˇ@ò8ÄÆµÄƵ≤6‡Î!?˙ˇ‡íñ|x˚˘ˇÄIYÒ‡¸ıˇ@!?˙ˇ‡Fíñ`x˚˘ˇÄçIYҸıˇ¿@?˙ˇ‡;úãò˙˘ˇÄwq.`˚ıˇ¿@?˙ˇ‡
  12074. ˘˘ˇÄ(˙ıˇ¿@?˙ˇ‡˘˘ˇÄh˙ıˇ¿@?˙ˇ‡ˆ˘ˇÄ˜ıˇ¿@'?˙ˇ ‡c@@†˘ˇÄΔ˛ÄÄıˇ¿@'?˙ˇ ‡cnVΔÎ3MŒ†˘ˇ Ä«ùMõ¶l≥πÄıˇ¿@'?˙ˇ ‡c:RijJ)̎ ÄΔ’D§òeıˇ¿@'?˙ˇ ‡U⁄S®jz<)̎ Ä´UGa§¯xjeıˇ¿@'?˙ˇ ‡UöS)jB<)̎ Ä™UFe§àxJeıˇ¿@'?˙ˇ ‡IzrÊz2ŒÄ˘ˇ Äì’≈Ÿ‰h;πıˇ¿@?˙ˇ‡˙˘ˇÄ˙ ıˇ¿@?˙ˇ‡˙˘ˇÄ˙ ıˇ¿@?˙ˇ‡¯̎ĝıˇ¿@?˙ˇ‡¯‡˘ˇÄ¯¬ıˇ¿@?˙ˇ„˜ˇ˘ˇè˜ˇ‚ıˇ¿@?˙ˇ‡¯‡˘ˇÄ¯¬ıˇ¿@?˙ˇ‡¯̎ĝıˇ¿@?˙ˇ‡¯˘ˇÄ¯ıˇ¿@?˙ˇ‡ˆ˘ˇÄ˜ıˇ¿@?˙ˇ‡ ˜˘ˇÄ ¯ıˇ¿@?˙ˇ‡8˜˘ˇŇ¯ıˇ¿@?˙ˇ‡¯˜˘ˇ`ıˇ¿@?˙ˇ·˜ˇ˘ˇè˜ˇ¬ıˇ¿@?˙ˇ‡¯˜˘ˇ`ıˇ¿@?˙ˇ‡8˜˘ˇŇ¯ıˇ¿@?˙ˇ‡ ˜˘ˇÄ ¯ıˇ¿@?˙ˇ‡ˆ˘ˇÄ˜ıˇ¿@#?˙ˇ‡˛òø˘ˇÄ˛&3˝ıˇ¿@#?˙ˇ‡˛2e2¸˘ˇÄ˛iL§˝ıˇ¿@#?˙ˇ‡˛e2¸˘ˇÄ˛)L§˝ıˇ¿@#?˙ˇ‡˛e2¸˘ˇÄ˛)L§˝ıˇ¿@#?˙ˇ‡˛e2¸˘ˇÄ˛)L§˝ıˇ¿@%˙ˇ‡˛òø?˙ˇÄ˛&3˝ıˇ¿@˙ˇ‡ˆ?˙ˇÄ˜ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@Ú Ò˚ıˇ¿@ÚÄÚp˚ıˇ¿@Ò‡Û¿˚ıˇ¿@Ò8Û˙ıˇ¿@ÒÛ˙ıˇ¿@Ò¿Ùp˙ıˇ¿@pı¿˙ıˇ¿@ı˘ıˇ¿@òÅ∂@µHH‡µƒûIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  12075. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  12076. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  12077.  
  12078.  
  12079.  ˛êêê@µ26rÎ'ÅÅÅÀÅÅÅÀ
  12080. Å∂Åó∂Üë硽∑äíˇèˇ˝πᲡëˇèˇ˝"∫ˇˇäˇˇìˇèˇ˝πˇˇä˝ˇëˇèˇ˝#∫ˇ˛ã    ìˇèˇ˝"∫ˇˇäˇˇìˇèˇ˝∑ˇˇä˝ˇíˇèˇ˝πáëˇèˇ˝∂Ñèˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝<∑ˇ˜ˇ˛˜ˇ˛ù˛ˇ‹ˇ˛ˇ˛ˇˇÂˇ˛ˇfiˇ˜ˇˇ˛›ˇ¡ˇ˝«∏ˇ˝ˇ˛ˇ ˇˇˇˇˇˇ˛ˇˇˇ˛ˇ˛˛ˇ˛ˇˇˇ˛ˇ˛ˇˇ˛ˇ¬ˇ˛ˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇ˛ˇˇˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇ˛˝ˇˇˇˇ˛ˇÂˇ¯ˇ˛ˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇ¡ˇ˝À∏#ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛˛ˇ˛ˇ˛ˇˇˇ¡ˇ¸ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇ˛ˇˇ˝˛ˇˇˇˇˇ¸
  12081. ˇˇˇˇˇˇ‰ˇ¯ˇ˝ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ¡ˇ˝“πˇ˛˛ˇ ˇ˛ˇ˛ˇ˛˛˛ˇˇˇˇ˛ˇˇˇ˛
  12082. ˇˇ˛ˇˇˇ˛ˇ˛˛ˇˇ¬ˇ¸˛ˇˇˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇˇ¸ˇˇ˛ˇ˛ˇ˛Âˇ¯ˇ˝˛ˇˇˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇ¡ˇ˝–πˇ˛ ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ ˇˇˇˇˇ˛ˇˇ˚ˇ√ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ¸ˇˇˇˇ˚ˇÊˇ¯ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇ¡ˇ˝»πˇ˛˛ˇ˛ˇ    ˇˇˇˇ˛ˇ ˇˇˇˇˇˇ˛˛ˇ˛˛ˇˇ˛ˇ˛ˇˇ˛ˇ¡˛ˇ˛    ˇˇˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇˇˇˇ˛
  12083. ˇˇˇˇ˝ˇˇ˛˛ˇ˛ˇˇˇˇ¸ˇˇˇˇˇ˛ˇÂˇ˜˛ˇ ˇˇˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇˇˇˇ˛ˇ¡ˇ˝"µˇ˝ˇ„ˇöˇ–ˇŒˇËˇ©ˇ˝#µˇ˝ˇ„ˇöˇ“ˇˇÕˇËˇ©ˇ˝ÅÅ√ˇèˇ˝J∑ˇÒˇ˚ˇˇ˛ÿˇŸˇÓˇ¸ˇœ˛˛˛›ˇÌˇ˚ˇ˘ˇˇı˛ˇ˚ˇÀˇ˝›π˛ˇˇˇ˛ˇ˛ˇˇˇˇ˝ˇ˛ˇˇˇ˛ˇ¸ˇˇˇˇ˝ˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ⁄ˇˇˇˇ˛¸ˇ˛    ˇˇˇˇˇˇ˛ˇ˝ˇˇ¸ˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇ˛ˇ·ˇ¯ˇˇˇˇ˛˝ˇˇ˝ˇˇˇ˛ˇˇˇ˛ˇ˛    ˇˇˇˇˇÀˇ˝Ó∫    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛&ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇŸ ˇˇˇˇˇˇ˝ ˇˇˇˇˇˇˇ¸ˇˇ˛&ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇ·ˇ¯
  12084. ˇˇˇˇˇˇˇ˝ˇˇ˝
  12085. ˇˇˇˇˇˇˇˇ˛ˇˇˇ˝ˇÀˇ˝Ù∫˛ˇ˛˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇ˛˝ˇ˛ˇ˛ˇ˛"ˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛Ÿˇˇˇˇˇˇ˛ˇˇˇˇ˛ˇˇ˛ˇˇ˛˛˛˛˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛˛ˇˇˇˇ˛ˇ˛ˇ·ˇ¯ˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇÀˇ˝Ó∫ˇˇˇ˚ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇŸˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇˇˇ·ˇ¯ˇˇ˝ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇÀˇ˝Âπ˛ˇˇˇ˛ˇ˛ˇˇˇ˝ˇ˛    ˇˇˇˇˇˇ¸ˇˇˇ˝
  12086. ˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇŸˇˇˇ˛ˇˇˇ˛˛ˇ    ˇˇˇˇˇ˝˛ˇ˝
  12087. ˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇˇˇ·ˇ¯ˇˇˇ˛˝ˇˇ˛ˇˇ˛˛ˇ ˇˇˇˇˇˇ˛ˇˇˇ˛ˇÀˇ˝•ˇ÷ˇåˇ¬ˇÓˇ£ˇ˝•ˇ÷ˇåˇ¬ˇˇˇ¢ˇ˝ÅÅ√ˇèˇ˝I∫˛ˇÔˇ˙ˇfiˇƒ˛ˇÔˇ˚ˇ˘ˇ˛ˆ˛ˇ˚ˇ˘ˇˇˇ˙ˇˇfiˇèˇ˝°∫ˇˇˇ˛ˇˇˇˇˇ˛ˇˇˇˇ˝ˇˇˇˇ˝ˇˇ˛ ˇˇˇˇˇˇˇ˛ˇ˝ˇˇˇˇ»ˇˇˇˇ¸ˇˇˇˇ˛˝ˇˇ˝ˇ
  12088. ˇˇˇˇˇˇˇ˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇ¸ˇ˝¸ˇ˛ˇˇÂˇèˇ˝•∫ˇˇ˛ˇˇˇ˛ˇˇ˛ˇˇ˚ˇˇˇ˝ˇˇˇˇˇˇˇˇˇ˛ˇ˚ˇˇˇ…ˇˇˇ˚
  12089. ˇˇˇˇˇˇˇ˝ˇˇ˝
  12090. ˇˇˇˇˇˇˇˇ˛ˇˇˇ˝ˇ˛ ˇˇˇˇˇˇˇ¸    ˇˇˇˇˇÊˇèˇ˝´∫ˇˇ˛ˇˇ˛ˇˇˇ˛˛˛ˇ¸
  12091. ˛ˇˇ˛ˇˇˇ˛ˇ˛˛ˇ˛ˇ˛ˇ¸˛ˇˇ…ˇˇˇ¸ˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ ˇˇˇ˛ˇ˛ˇ¸    ˛ˇˇˇˇ˛ˇÊˇèˇ˝©∫ˇˇ˛ ˇˇˇˇˇˇˇ˛ˇˇ˝ˇˇˇˇˇˇˇˇˇˇ¸ˇ˛ˇ˝ˇˇˇ…ˇˇˇ˝ˇˇ˝ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇ˛ ˇˇˇˇˇˇˇ¸ˇˇˇˇ„ˇèˇ˝¢∫ˇˇ˝ˇˇ˝ˇˇ˛ˇˇ¸ˇˇˇ˝˛ˇˇˇˇˇˇˇˇ˛ˇ¸ˇˇˇ»ˇˇˇ¸ˇˇˇ˛˝ˇˇ˛ˇˇ˛˛ˇ ˇˇˇˇˇˇ˛ˇˇˇ˛ˇ˝
  12092. ˇˇˇˇˇˇ¸ˇˇˇ˛ˇˇÂˇèˇ˝Å•ˇ†ˇèˇ˝Åߡˇüˇèˇ˝ÅÅ√ˇèˇ˝3πˇ˛ˇ›ˇ˛ˇˇ˛ˇ˛ö˛˘ˇ¸ˇÒ˛˚ˇ˛Õˇèˇ˝û∫ˇ˛ˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇ˛˝ˇ˛ˇˇˇ˛˛ˇˇˇˇˇÀˇˇˇˇ˛˝ˇˇˇˇ˛ˇˇˇˇˇ˛˛ˇ˛˛ˇˇˇˇ˛ˇˇˇˇˇ˛ˇ˛ˇˇˇ˛ˇ’ˇ¯°ˇ¯ˇ˝∫ˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ ˇˇˇˇˇˇˇ ˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ’ˇ¯_ˇˇ¯ˇ˝ ∫˛¸"ˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛˛˛ˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇ˛˛ˇ˛ ˛ˇ˛ˇˇ˛ˇ˛ˇ˛˛ˇˇ˛ˇˇ˛ˇˇ˛ˇˇˇˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇ˛ˇ¸
  12093. 
  12094. ›ˇ¯^ˇ˛ˇ˙ˇ˝∫ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ ˇˇ˝ˇˇˇˇˇ˚ˇˇˇ˝ ˇˇˇˇˇ¸ˇˇˇˇˇˇˇˇˇˇˇˇˇ˙8
  12095. 
  12096. 8·ˇ¯^ˇ˛ˇ˙ˇ˝ π˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˝ˇˇˇ˛ˇ˛ˇˇˇˇˇÕˇ˛ˇˇ˛˚ˇˇˇ˛ˇ˛ˇˇˇ˛˛ˇ˛˛ˇˇˇˇ˛ˇˇˇˇ˛ˇˇˇˇˇˇˇˇ˘
  12097.  
  12098. 8
  12099. Êˇ¯^ˇ˛ˇ˙ˇ˝á©ˇ–ˇ∫ˇ—ˇ„˛
  12100. 
  12101. Ρ¯^ˇ˛ˇ˙ˇ˝à©ˇ“ˇˇπˇ—ˇfi8
  12102. 
  12103. 8
  12104. ˇ¯^ˇ˛ˇ˙ˇ˝{ÅÅ’
  12105.  
  12106. 8
  12107.  
  12108. ıˇ¯^ˇ˛ˇ˙ˇ˝yÅÅ–˛
  12109. 
  12110. ˘ˇ¯^ˇ˛ˇ˙ˇ˝}ñÅ∏8
  12111. 
  12112. 8
  12113. ˛ˇ¯^ˇ˛ˇ˙ˇ˝yñ
  12114. Å≥
  12115.  
  12116. 8
  12117.  
  12118. ˘^ˇ˛ˇ˙ˇ˝zñ
  12119. ÅØˇ˛
  12120. 
  12121.  
  12122. ˛^ˇ˛ˇ˙ˇ˝vñ8ÅØˇ¸
  12123. ˇ¸ˇNˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝tñÅØˇ¯^ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝tñ
  12124. ÅØˇ¯^ˇ˛ˇˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˙ˇ˝sñÅØˇ¯ˇˇˇˇ˝ˇFˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝sñ
  12125. ÅØˇ¯ˇˇˇˇ˝ˇFˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝tñ
  12126. ÅØˇ¯^ˇˇˇ˛ˇˇ˛˛ˇ˛ˇ˛ˇˇˇ˛ˇ˙ˇ˝tñ8ÅØˇ¯^ˇ˛ˇ˙ˇ˝òÅ∂@ĵHH‡®|üIJˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  12127. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  12128. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  12129.  
  12130.  
  12131.  ˛êêê@ĵr6≤Î'tñÅØˇ¯^ˇ˛ˇ˙ˇ˝tñ
  12132. ÅØˇ¯^ˇ˛ˇ˙ˇ˝rñÅØˇ¯    ˇ¸ˇOˇˇˇˇ˛ˇ˙ˇ˝oñ
  12133. ÅØˇ¯ˇˇˇ˛ˇˇˇ˚ˇˇˇ¸ˇ'ˇ˛ˇ˙ˇ˝tñ
  12134. ÅØˇ¯^ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝qñ8ÅØˇ¯ˇˇˇˇˇ¸ˇ˝ˇ<ˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝sñÅØˇ¯ˇˇˇˇˇˇˇ˝ˇ<ˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝{¬ˇ◊
  12135. Õ¬ˇ¢ˇ¯^ˇˇˇ˛ˇˇˇˇˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˙ˇ˝ˆ@ˇˇ◊Õ>ˇˇ¢ˇ¯^ˇˇˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12136. Õ=ˇ˛ˇ§ˇ¯^ˇˇˇˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12137. Õ=ˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ8Õ=ˇ˛ˇ§ˇ¯
  12138. ˇ˛ˇPˇˇˇˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸÕ=ˇ˛ˇ§ˇ¯ˇˇˇˇˇ˛ˇ˛ˇ˛ˇ=ˇˇˇˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12139. Õ=ˇ˛ˇ§ˇ¯^ˇˇ˛˛ˇˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˙ˇ˝ˆ?ˇ˛ˇŸÕ=ˇ˛ˇ§ˇ¯ ˇ˛ˇˇˇˇˇˇˇˇˇ˝ˇ˝ˇ0˛ˇ˙ˇ˝˜?ˇ˛ˇŸ
  12140. Õ=ˇ˛ˇ§ˇ¯)ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ0˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12141. Õ=ˇ˛ˇ§ˇ¯ˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ˇ=ˇ˛˛ˇ˙ˇ˝¯?ˇ˛ˇŸ8Õ=ˇ˛ˇ§ˇ¯^ˇˇˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸÕ=ˇ˛ˇ§ˇ¯^ˇˇˇˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12142. Õ=ˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸÕ=ˇ˛ˇ§ˇ¯^ˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12143. Õ=ˇ˛ˇ§ˇ¯ˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12144. Õ=ˇ˛ˇ§ˇ¯Eˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇ˛˛ˇ˙ˇ˝ı?ˇˇˇˇˇˇ˛ˇŸ8Õ ˇ˛ˇ-ˇ˛ˇ§ˇ¯ˇˇˇˇ˛ˇ ˇˇˇˇˇ˛ˇˇˇˇˇˇˇ¸ˇ˝ˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝ıˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ ˛ˇŸÕˇˇˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇ ˇˇ˛ˇ§ˇ¯:ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝¯?ˇˇˇˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛˛ˇŸ
  12145. Õ=ˇˇˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇ˛ˇ§ˇ¯Gˇˇˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛˛ˇˇˇˇ˛˛ˇˇˇ˛ˇ˛ˇ˙ˇ˝Ûˇ˚ˇ*ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇŸÕ)ˇˇˇˇˇˇˇˇˇˇˇˇˇ¸ˇˇˇ˛ˇ§ˇ¯^ˇˇˇ˛ˇ˙ˇ˝¯?ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇŸ
  12146. Õ=ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ§ˇ¯^ˇˇˇ˛ˇ˙ˇ˝¯?ˇˇˇˇ˛ˇˇ˛ˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˛ˇ˛ˇŸ
  12147. Õ=ˇ˛ˇˇˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇˇˇ˛ˇŸ8Õ=ˇˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇˇˇ˛ˇŸÕ=ˇˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12148. Õ=ˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸÕ=ˇˇˇˇˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12149. Õˇˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12150. Õ!ˇˇ˛˛ˇ˛ˇˇˇ˛ˇˇ˛ˇ˛˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝ˆ?ˇ˛ˇŸ8Õˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ¸ˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸÕ=ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸ
  12151. Õˇˇ˛ˇ˛ˇ"ˇˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝¯?ˇ˛ˇŸÕ=ˇˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝ò?ˇ˛ˇŸ
  12152. Õ=ˇˇˇ˛ˇ§ˇ¯üˇ˙ˇ˝ò?ˇ˛ˇŸ
  12153. Õ=ˇ˛ˇ§ˇˆ°ˇ˙ˇ˝ò?ˇ˛ˇŸ8Õ=ˇ˛ˇ§ˇˆ°ˇ˙ˇ˝î?ˇ˛ˇŸÕ=ˇ˛ˇ§ˇèˇ˝î?ˇ˛ˇŸ
  12154. Õ=ˇ˛ˇ§ˇèˇ˝î?ˇ˛ˇŸÕ=ˇ˛ˇ§ˇèˇ˝î?ˇ˛ˇŸ
  12155. Õ=ˇ˛ˇ§ˇèˇ˝î?ˇ˛ˇŸ
  12156. Õ=ˇ˛ˇ§ˇèˇ˝ê?ˇ˛ˇ§=ˇ˛ˇ§ˇèˇ˝ê?ˇˇˇ˛ˇ§=ˇ˛ˇ§ˇèˇ˝èˇ˝ˇ˛ˇ§=ˇ˛ˇ§ˇèˇ˝ê?ˇˇˇˇˇ˛ˇ§=ˇ˛ˇ§ˇèˇ˝Öˇˇˇ˝ˇˇ˛ˇ§ˇ˙ˇ¯ˇ˛ˇ§ˇèˇ˝±ˇˇˇ˚ˇˇ˛ˇ˚˛˛ˇ˛ÎˇÙˇˇ˛ˇŸˇ˛ˇ˝ ˇˇˇˇ˚ˇ˛ˇ˙ˇ˛˛ˇÏˇÙˇ˛˝ˇ⁄ˇèˇ˝Δˇ˛ˇ˘ˇˇ˛ˇ˘ˇˇ˛˛ˇˇˇˆ˚ˇ˛ˇˇ¸ˇˇŸˇˇ˚ ˇˇˇ˚ˇˇ˛ˇ¯ˇˇ˛˛ˇ˛ˇˇ˜ˇ¸ˇ˛ˇˇ¸ˇˇ⁄ˇèˇ˝æˇˇˇˆˇˇ˛ˇ˘ˇ˛
  12157. ˇˇˇˇˇˇˆˇˇˇ˝ˇˇˇˇˇ◊ˇˇ˙ıˇ˙ˇ˛ˇ¯ˇˇˇˇˇˇˇˆˇˇˇ˝ˇˇˇˇˇ◊ˇèˇ˝«ˇˇˇÙˇˇ˛ˇ˘˛˛
  12158. ˛ˇˇˇˇ˛ˇˇ˛ˇˇ˛ˇ˝ˇ˛ˇˇˇ˛ˇ˛ˇ◊ˇˇÁˇ˛ˇ¯ˇˇ˛ˇ˛ˇˇ˛ˇ˛˛ˇ˛˝ˇˇˇ˛ˇˇˇˇ˛◊ˇèˇ˝æˇˇˇÚˇˇ˛ˇ˘ˇ˛ˇˇˇˇˇ˚˝ˇ˝ˇˇˇˇˇˇˇˇ◊ˇˇ˘¯ˇ¯ˇ˛ˇ¯ ˇˇˇˇˇˇ˚˝ˇ˝ˇˇˇˇˇˇˇˇ◊ˇèˇ˝¥ˇˇˇˇˇ˛ˇ˘ˇ˝ˇ˛ˇˇˇıˇˇˇ˛˛ˇˇˇˇ◊ˇˇ˚˜ˇ˜ˇ˛ˇ¯ˇ˛ˇ˛ˇ˛ˇˇıˇˇˇ˛˛ˇˇˇˇ◊ˇèˇ˝~ˇˇˇÓˇˇ˛ˇÙˇˇ¥ˇˇ˚˜ˇˇˇ˚ˇ˛ˇÙˇˇ¥ˇèˇ˝}ˇˇˇÏˇˇ˛ˇıˇˇˇ¥ˇˇ¸¸ˇ¯ˇ˚ˇ˛ˇıˇˇˇ¥ˇèˇ˝qˇˇˇÍˇˇ˛ˇ§ˇˇ¸˛ˇ˚ˇ˛˛ˇ¸ˇ˛ˇ§ˇèˇ˝óˇˇˇËˇˇ˛ˇ˙ˇ˛ˇ˚˛˝ˇÍˇÒˇ„ˇˇ˝˝ˇ¸˘ˇ¸ˇ˛ˇ˘ˇˇ˛¸ˇ¸˛ÎˇÒ˛„ˇèˇ˝∑ˇˇˇÚ˘ˇ˝ˇˇ˛ˇ˚ˇ˛ˇˇˇ˛ˇˇˇˇ˛˛ˇˇˇˆˇÒˇ„ˇˇ˝˛ˇ¸˜ˇ˝ˇ˛ˇ˙ˇ˛ˇˇˇ˛ˇ˛ˇ˛˛ˇˇˇˆˇÒˇ„ˇèˇ˝πˇˇˇÛˇˇ˚ˇˇ˝ˇˇ˛ˇ˚ˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇ«ˇˇ˝˛ˇ¸¸ˇ˝ˇ˝ˇ˛ˇ˙ˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇ«ˇ¯°ˇ¯ˇ˝òÅ∂ÄÆµHH‡µƒ†Ä˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  12159. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  12160. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  12161.  
  12162.  
  12163.  ˛êêêÄÆµ≤6‡Î' ˇˇˇıˇˇ˘ˇˇ˛ˇˇ˛ˇ¯ˇ˛ˇˇˇˇˇˇ˛ˇ˛˛ˇ˛˛˛˛ˇŒˇˇ˝˛ˇ˛˚ˇ˛˛ˇ˝ˇ˛ˇ˜ˇˇ˛ˇ˛ˇˇ˛ˇˇˇˇ˛ˇˇ˛ˇˇ˛ˇŒˇ¯_ˇˇ¯ˇ˝ˇˇˇˆ˚ˇ¸ˇˇˇˇ˛ˇ˚ˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˚˝ˇŒˇˇ˝˛ˇ˝˝ˇ˝˛ˇ˝ˇ˛ˇ˙ˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˚˝ˇŒˇ¯^ˇ˛ˇ˙ˇ˝ ˇˇˇ˙Ùˇ¸ˇ˛ˇ˙˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇˇΔˇˇ˝˝ˇ˜˝ˇ˝ˇ˛ˇ˘˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇΔˇ¯^ˇ˛ˇ˙ˇ˝‡ˇˇˇ˚Ùˇ˛˝ˇ˛ˇËˇˇ¿ˇˇ˝˝ˇ˜˛ˇ¸ˇ˛ˇËˇˇ¿ˇ¯^ˇ˛ˇ˙ˇ˝„ˇˇˇ˘˚ˇ˙˝ˇ˛ˇÈˇˇˇ¿ˇˇ¸˝ˇ˘¸ˇ˝ˇ˛ˇÈˇˇˇ¿ˇ¯^ˇ˛ˇ˙ˇ˝◊ˇˇˇ˘ˇˇ˜˝ˇ˛ˇ§ˇˇ¸¸ˇ¸˘ˇ˛ˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝ˇˇˇ˘˛ˇ˘˝ˇ˛ˇ˚˛ˇ˛ˇˇÛˇ˜˛Í˛ÛˇˇÙˇˇ˚˚ˇ˜ˇ˛ˇ˛ˇ˙ˇ˛˛˛ˇÛ˛¯ˇÈˇÛˇˇÙˇ¯^ˇ˛ˇ˙ˇ˝^ˇˇˇ¯˘ˇ˝ˇ˛ˇ˚ˇˇ˛ˇˇˇˇ˛ˇ
  12164. ˇˇˇˇˇˇ˛ˇˇ˛ˇ ˇˇˇˇˇˇˇ¯ˇˇˇ˛ˇ˛ˇˇˇÙˇˇ˙Òˇ˛ˇ˛ˇ˙ˇˇ˛˝ˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇ ˇˇˇˇˇˇˇ˜ˇˇˇ˛ˇ˛ˇˇˇÙˇ¯^ˇ˛ˇ˙ˇ˝Yˇˇˇˆˇˇ˚ˇ˛ˇ˚ˇˇ˛ˇˇ˛ˇ!ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇÛ˛ˇˇˇˇˇÚˇˇ¯˙ˇ¸ˇ˝ˇ˛ˇ˙ˇˇ˛ ˇˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇˇˇˇÛ ˇˇˇˇˇˇˇÛˇ¯^ˇ˛ˇ˙ˇ˝kˇˇˇ¯ˇˇ¸ˇ˛ˇ˚ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇ˛ˇˇˇ˝
  12165. ˇˇˇˇˇˇ˛ˇˇ˛ˇ˛ˇˇ¸
  12166. ˛ˇˇ˛ˇˇ˛ˇÚˇˇˇˆ˛ˇ˜ˇˇ˛ˇ˙ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇ˝˛ˇˇˇ˛ˇ˛ˇ˝ˇˇ˛ˇ˝ˇˇˇˇˇˇˇ˛Ûˇ¯^ˇ˛ˇ˙ˇ˝gˇˇˇ˙ˇˇ˝ˇ˛ˇ˚(ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ˛˝ˇ¸
  12167. ˇˇˇˇˇˇˇÚˇ¯ˇ˙˜ˇ˛ˇ˙ˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇ˝˝ˇ˝ˇˇˇˇˇˇˇÛˇ¯^ˇ˛ˇ˙ˇ˝dˇˇˇ¸ˇˇ˛ˇ˚ˇˇˇ˝ˇˇ˛ˇˇ˛ˇˇˇ˝ˇˇ˛ˇˇˇÙ˚ˇ˛ˇˇÚˇˇˇ˙ˇˇ˛ˇ˙ˇˇ˝ˇˇˇ˛ˇ˛ˇ˛ˇˇˇ˝ˇˇ˛ˇˇˇÙ˛ˇ˛ˇ˛ˇˇÛˇ¯
  12168. ˇ¸ˇNˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝˚ˇˇˇ˛ˇˇ˛ˇΩˇ˝ˇÓˇıˇ˛ˇºˇ˛ˇÓˇ¯^ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝ ?ˇˇˇˇˇ˛ˇΩˇ˝ˇ˘ˇ˜=ˇ˛ˇºˇ˛ˇ¯ˇ¯ˇ¯^ˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝˚ˇ˛ˇ˛ˇØ˝ˇ˙=ˇ˛ˇÆ˛ˇ˙ˇ¯ˇˇˇˇ˝ˇFˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝¸?ˇ˛ˇÆ¸ˇ¸=ˇ˛ˇ≠¸ˇ˝ˇ¯ˇ˛ˇˇ˛ˇG˛ˇˇ˛ˇ˛ˇ˛˛˛ˇ˙ˇ˝˙?ˇ˛ˇ˛´ˇ˝=ˇ˛ˇ˛™ˇ˛ˇ¯
  12169. ˇ¸ˇNˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝¸?ˇ˛ˇÆ¸ˇ¸=ˇ˛ˇ≠¸ˇ˝ˇ¯^ˇ˛ˇ˙ˇ˝¸?ˇ˛ˇØ˝ˇ˙=ˇ˛ˇÆ˛ˇ˙ˇ¯^ˇ˛ˇ˙ˇ˝¸?ˇ˛ˇØˇ˜=ˇ˛ˇÆˇ¯ˇ¯^ˇ˛ˇ˙ˇ˝Ú?ˇ˛ˇ§=ˇ˛ˇ§ˇ¯    ˇ¸ˇOˇˇˇˇ˛ˇ˙ˇ˝˝?ˇ˛ˇ¯ˇˇØ=ˇ˛ˇ¯ˇÆˇ¯'ˇˇ˛˛ˇˇˇˇˇˇ˛˛ˇˇ˛ˇ˛˛ˇ'ˇ˛ˇ˙ˇ˝¸?ˇ˛ˇ˙˛ˇÆ=ˇ˛ˇ˚˝ˇÆˇ¯^ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝˘?ˇ˛ˇ¸¸ˇÆ=ˇ˛ˇ˝¸ˇ≠ˇ¯ˇˇˇˇˇ¸ˇ˝ˇ<ˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝¸?ˇ˛ˇ˝¨ˇ˝=ˇ˛ˇ˛´ˇ˝ˇ¯ˇˇˇˇˇˇˇ˛ˇ=˛ˇˇˇ˛ˇˇˇˇ˛ˇ˙ˇ˝¸?ˇ˛ˇ¸¸ˇÆ=ˇ˛ˇ˝¸ˇ≠ˇ¯ˇˇˇ˛ˇˇˇˇˇˇ˛ˇ-ˇˇˇ˛ˇ˙ˇ˝¸?ˇ˛ˇ˙˛ˇÆ=ˇ˛ˇ˚˝ˇÆˇ¯^ˇˇˇ˛ˇ˙ˇ˝˝?ˇ˛ˇ¯ˇˇØ=ˇ˛ˇ¯ˇÆˇ¯^ˇˇˇ˛˛ˇ˙ˇ˝Ù?ˇ˛ˇ§=ˇ˛ˇ§ˇ¯^ˇ˛ˇ˙ˇ˝ ?ˇ˛ˇ·ˇ˛ˇˇˇˇ˛ˇˇˇˇ◊=ˇ˛ˇ‡ˇˇˇ˛ˇˇˇˇ˛ˇˇÿˇ¯
  12170. ˇ˛ˇPˇˇˇˇ˛ˇ˙ˇ˝$?ˇ˛ˇ‚ˇˇˇ˛ˇ˛ˇˇˇˇÿ=ˇ˛ˇ·˛ˇˇˇ˛ˇ˛ˇˇ˛Ÿˇ¯ˇˇˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇ=ˇ˛ˇˇ˛ˇ˙ˇ˝"?ˇ˛ˇ·ˇˇˇˇˇˇˇˇˇÿ=ˇ˛ˇ‡ˇˇˇˇˇˇˇˇˇŸˇ¯^ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝ ?ˇ˛ˇ·ˇˇˇˇˇˇˇˇˇÿ=ˇ˛ˇ‡ˇˇˇˇˇˇˇˇˇŸˇ¯ ˇ˛ˇˇˇˇˇˇˇˇˇ˝ˇ˝ˇ0˛ˇ˙ˇ˝•¿ˇ·˛ˇˇˇˇ˛ˇ˛ˇÿ¿ˇ‡ˇˇ˛ˇˇˇˇˇˇŸˇ¯^ˇˇˇ˛ˇˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇˇ˛ˇ˙ˇ˝¢˝¬ˇ·ˇ˛ˇˇˇˇ˛ˇˇˇˇ’¬ˇ‡ˇˇˇ˛ˇˇˇˇ˛ˇˇÿˇ¯
  12171. ˇ˛ˇ˛ˇ˛ˇˇˇ˛ˇ=ˇˇ˛ˇ˙ˇ˝v˝¬ˇ¢¬ˇ§ˇ¯^ˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝zÖ
  12172.  
  12173. Ÿ
  12174. »ˇ¯^ˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝xÑ˛
  12175. Ş
  12176. «ˇ¯^ˇˇ˛˛ˇˇ˛ˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ˙ˇ˝zÅ
  12177. 8
  12178. Ö
  12179. 8≈ˇ¯ˇˇˇˇˇ˛ˇ:ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ
  12180. ˛ˇ˙ˇ˝yÅ
  12181.  
  12182. 8â
  12183.  
  12184. √ˇ¯ˇˇˇˇ˛ˇ ˇˇˇˇˇ˛ˇˇˇˇˇˇˇ¸ˇ˝ˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝zÅ˝
  12185.  
  12186. ç˛
  12187. ¡ˇ¯^ˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˙ˇ˝{Å˚
  12188. 8
  12189. í
  12190. 8øˇ¯ˇˇˇˇ˝ˇˇ˛ˇˇ˛ˇˇˇ˝ˇˇˇˇˇ˛ˇˇˇˇˇˇˇ˛ˇ˙ˇ˝|ů
  12191. 8ñ
  12192.  
  12193. Ωˇ¯^ˇˇ˛ˇ˙ˇ˝zň
  12194. 
  12195. ö˛
  12196. ªˇ¯^ˇˇˇ˛ˇ˙ˇ˝ò8@µ@µ‡6 ÎĈ˘ıˇ¿@Ô‡ˆp˘ıˇ¿@Ô8ˆ¿˘ıˇ¿@Ô˜Ģıˇ¿@Ô¿¯¯ıˇ¿@Óp¯8¯ıˇ¿@Ó¯‡¯ıˇ¿@ÓÄ˙įıˇ¿@̇˙˜ıˇ¿@Ì8˙8˜ıˇ¿@Ì˙‡˜ıˇ¿@Ì¿¸Ęıˇ¿@Ïp¸ˆıˇ¿@ϸ8ˆ?ˆˇ¿@ÏÄ˝‡ˆ?ˆˇ¿@·˛ĈÛ@Î8˛ıÛ@Î8ıÛ@ο?ćıÛ@ÍpÉÄı˚Ä˚@ͬÙ˚Ä˚@Èˇ¿ÙÛ@Èˇ¿ÙÛ@È¿ÙÛ@ÈÄÙÛ@È?ÄÙÛ@
  12197. ÈÛÛ@⁄˚Ä˚@⁄˚Ä˚@    ⁄Û@    ⁄Û@    ⁄Û@È˝#˘Û@È    "oúŒgcs∞¸Û@È     öì*ï#Q¶`¸Û@È     öì*ı"≠V߇¸˚Ä˚@È    "öì*Ö"©T¶ ¸˚Ä˚@È    jú e"OSù†¸Û@Á¸˚Û@Á¸˚Û@    ⁄Û@Ë ‡˝˝ıˇ@È
  12198. 3t¯ÉÃf}Δ„s˝ıˇ@È
  12199. $¥©$ôU)§—˝ıˇ¿@È
  12200. '¥®É$âU)ß—˝ıˇ¿@È
  12201. $4®C$ôU)§Q˝ıˇ¿@È
  12202. #<®É‡ƒfUΔ£Q˝ıˇ¿@‚˙ıˇ¿@‚˙ıˇ¿@ ⁄ıˇ¿@Ȇ˜ıˇ¿@È6
  12203. Œ¶ng¯ıˇ¿@È)©6ï¯ıˇ¿@È)®÷ï¯ıˇ¿@È)©ñï¯ıˇ¿@ÈŒ¶ve@˘ıˇ¿@Ëııˇ¿@Ëııˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ò8@ĵ@ĵ 6`Î ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄ıˇ¿@ ⁄?ˆˇ¿@ ⁄?ˆˇ¿@    ⁄Û@    ⁄Û@    ⁄Û@    ⁄Û@    ⁄Û@    ⁄Û@    ⁄Û@    ⁄Û@    ⁄Û@    ⁄Û@    ⁄Ûˇ¿………………………………………ò8ÄÆµÄƵ`6éÎ…………………………………………………………………………………………………………………………òÅ∂@µHH‡®|°Ä˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  12204. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  12205. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  12206.  
  12207.  
  12208.  ˛êêê@µ‡6 Î'}ÅÙ8
  12209. 
  12210. ü
  12211. 8πˇ¯^ˇ˛ˇ˙ˇ˝|ÅÒ8
  12212. £
  12213.  
  12214. ∑ˇ¯^ˇ˛ˇ˙ˇ˝{ÅÔ
  12215.  
  12216. ¶
  12217.  
  12218. µˇ¯^ˇ˛ˇ˙ˇ˝|ÅÌ
  12219. 
  12220. ™
  12221. 8
  12222. ¥ˇ¯^ˇ˛ˇ˙ˇ˝}ÅÎ8
  12223.  
  12224. Ø
  12225.  
  12226. 8≤ˇ¯^ˇ˛ˇ˙ˇ˝zÅ˲
  12227. ≥
  12228.  
  12229. ∞ˇ¯^ˇ˛ˇ˙ˇ˝|ÅÊ
  12230. 8∑
  12231. 8
  12232. Æˇ¯^ˇ˛ˇ˙ˇ˝}ʼn
  12233.  
  12234. 8º
  12235.  
  12236. 8¨ˇ¯^ˇ˛ˇ˙ˇ˝|Å·
  12237.  
  12238. ¿
  12239.  
  12240. ™ˇ¯^ˇ˛ˇ˙ˇ˝|Åfl
  12241. 8
  12242. ƒ
  12243. 8
  12244. ®ˇ¯^ˇ˛ˇ˙ˇ˝|Å›
  12245.  
  12246. 8»
  12247.  
  12248. 8¶ˇ¯^ˇ˛ˇ˙ˇ˝}Å€
  12249.  
  12250. 
  12251. Õ
  12252.  
  12253. §ˇ¯^ˇ˛ˇ˙ˇ˝Åÿ8
  12254. —
  12255. 8
  12256. ¢ˇ¯üˇ˙ˇ˝Å÷
  12257. 8’
  12258.  
  12259. 8†ˇˆ°ˇ˙ˇ˝Å‘
  12260. 
  12261.  
  12262. ⁄
  12263.  
  12264. ûˇˆ°ˇ˙ˇ˝Å—
  12265. 
  12266. fi
  12267. 8
  12268. úˇèˇ˝Åœ8
  12269. ‚
  12270.  
  12271. 8öˇèˇ˝ÅÕ
  12272.  
  12273. Ùı
  12274.  
  12275. òˇèˇ˝!ÅÀ
  12276. 
  12277. 8¯˘
  12278. 8
  12279. ñˇèˇ˝(Å»
  12280.  
  12281. ¸¸
  12282.  
  12283. 8ˇˇ…ˇ˝#ÅΔ
  12284.  
  12285. ¸˛ˇ˚íˇ…ˇˇ…ˇ˝Å¿˝ˇçˇèˇ˝Åøˇˇãˇèˇ˝Å¿ˇ˛çˇèˇ˝Å¿ˇˇãˇèˇ˝ÅΩåˇèˇ˝Ūäˇèˇ˝ÅÅ√ˇ…ˇˇ…ˇ˝ÅÅ√ˇ…ˇˇ…ˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ Åæˇˇ˛›ˇ˛ˇˇ˛ˇˇ∏ˇèˇ˝TÅøˇ˛ˇˇˇ¸ˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇˇ˛ˇˇ˛˝ˇ˛ˇˇˇ˛˛ˇˇˇˇˇœˇèˇ˝VÅøˇ¸"ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇˇˇˇˇˇ˛ ˇˇˇˇˇˇˇŒˇèˇ˝ZÅøˇ¸ˇ˛ˇˇˇ˛ˇ˛ˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇˇˇˇˇ˛ˇ˛ˇˇˇˇˇˇ˛˛ˇŒˇ…˛ˇ…ˇ˝\Åøˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇŒˇ…ˇˇ…ˇ˝TÅæ˛ˇ˛    ˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˝ˇˇˇ˛ˇ˛ˇˇˇˇŒˇèˇ˝ÅÆˇ–˛…ˇèˇ˝ÅÆˇ“ˇˇ»ˇèˇ˝ÅÅ√ˇèˇ˝#Å∑ˇÓˇ˛˛ˇ˜ˇÿ˛€ˇ¯°ˇ¯ˇ˝æÅøˇˇˇˇ˛ˇˇ¸ˇ˛ˇ¸ˇˇ˛ˇ˝ˇˇˇˇ˛ˇˇˇˇ¸ˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇ˛ˇˇˇ€ˇ¯_ˇˇ¯ˇ˝ΔÅøˇˇˇˇˇˇˇˇˇˇ˚ˇˇ˛ˇ˛,ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ€ˇ¯^ˇ˛ˇ˙ˇ˝«Åøˇ˛˛ˇ ˇˇ˛ˇˇˇ˛ˇ¸ˇˇ˛ˇ˛    ˇˇ˛ˇ˛ˇˇ˛ˇ˛ˇˇˇˇˇˇ˛˛ˇ˛ˇ˛ˇ€ˇ¯^ˇ˛ˇ˙ˇ˝ΔÅøˇˇ˝
  12286. ˇˇˇˇˇˇ˝ˇ˝ˇˇ˛ˇ˛&ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇ˛ˇ€ˇ¯^ˇ˛ˇ˙ˇ˝øÅøˇ˛ˇˇ˝ˇˇˇˇ˛ˇ¸¸ˇ¸ˇˇ˛ˇ˛
  12287. ˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇˇ˛ˇˇˇˇ˛ˇ€ˇ¯^ˇ˛ˇ˙ˇ˝tÅDz√ˇ¯^ˇ˛ˇ˙ˇ˝tÅǡ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝ÅæˇÌˇˇ˜˛ˇ™ˇ¯^ˇ˛ˇ˙ˇ˝ûÅøˇˇˇˇ¸ˇˇ˛ˇ˛ˇ ˇˇˇˇˇˇ˛ˇˇˇ˛ˇ≥ˇ¯^ˇ˛ˇ˙ˇ˝ùÅæˇˇˇ¸˛ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ≥ˇ¯^ˇ˛ˇ˙ˇ˝†Åæ˛ˇ˛˛˛ˇˇ˛ˇˇ˛ˇˇˇ˛ˇˇ˛ˇˇˇ˛ˇ˛≥ˇ¯ ˇ˛˛ˇO˛˛ˇ˙ˇ˝†Åæˇˇˇ˛$ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ≥ˇ¯ˇˇˇˇ˛ˇ˛ˇ˛ˇ˛ˇ˛ˇ.˛ˇ˙ˇ˝úÅæˇˇˇ¸˚ˇ˛ˇ    ˇˇˇˇ˛ˇ
  12288. ˇˇˇˇˇˇˇµˇ¯^ˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝xÅ≤ˇ˝ˇòˇ¯^ˇˇˇˇˇ˛ˇˇˇ˛ˇˇˇˇˇˇ˛ˇ˛ˇ˙ˇ˝wÅ≤ˇ˝ˇòˇ¯ˇˇˇˇ˝ˇFˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝pÅÅ√ˇ¯
  12289. ˇ¸ˇNˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯    ˇ˛ˇQ˛ˇ˛ˇˇ˛ˇ˛ˇ˙ˇ˝qÅÅ√ˇ¯ˇˇˇ˛ˇˇˇ˝ˇˇˇˇ˛ˇ*ˇ˛ˇ˙ˇ˝òÅ∂@ĵHH‡µƒ¢Ä˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  12290. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  12291. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  12292.  
  12293.  
  12294.  ˛êêê@ĵ 6`Î'rÅÅ√ˇ¯.ˇˇˇˇˇˇˇˇˇˇˇ˛ˇ,ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯ˇˇˇˇ˛ˇ˛˛ˇCˇ˛ˇˇˇˇ˛ˇˇˇˇ˛˛ˇ˙ˇ˝qÅÅ√ˇ¯ˇˇˇˇˇˇˇ˝ˇ<ˇˇˇˇˇˇˇ˛ˇ˙ˇ˝qÅÅ√ˇ¯ˇˇˇ˛ˇˇˇ˛ˇˇ˝ˇ,ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇˇˇˇˇ˛˛˛ˇ˙ˇ˝rÅÅ√ˇ¯ˇˇˇˇˇ˛ˇ˛ˇ˛ˇ=ˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯)ˇ˛ˇˇ˛ˇˇ˛ˇ˛ˇ˛ˇˇ˛ˇ˛ˇ1˛ˇˇˇ˛ˇ˛ˇ˙ˇ˝qÅÅ√ˇ¯)ˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇ0ˇˇˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯
  12295. ˇ˛ˇ˛ˇ˛ˇˇˇ˛ˇ=ˇˇˇˇˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇˇˇˇˇˇˇˇ˛ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯ˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇˇˇˇˇˇˇ˛ˇ˛ˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯ˇˇˇˇˇ˛ˇ/ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˛ˇˇˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯ˇˇˇˇ˛ˇ ˇˇ˛ˇˇ˛ˇˇ˛ˇˇ˛ˇ˛ˇ˛˛ˇ˛˛ˇˇˇ˛ˇ˛ˇˇˇ˛ˇ˙ˇ˝qÅÅ√ˇ¯:ˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇˇ˝ˇˇˇˇˇˇˇˇ˛ˇ˙ˇ˝mÅÅ√ˇ¯ˇˇˇˇ˝ˇˇ˛ˇˇ˛ˇˇˇ˝ˇˇˇˇˇ˚ˇ˛ˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇˇ˛˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇˇˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝rÅÅ√ˇ¯^ˇ˛ˇ˙ˇ˝ÅÅ√ˇ¯üˇ˙ˇ˝ÅÅ√ˇˆ°ˇ˙ˇ˝ÅÅ√ˇˆ°ˇ˙ˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝ÅÅ√ˇèˇ˝
  12296. ÅÅ√硽ÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀòÅ∂ÄÆµHH‡®|£Ä˛ˇˇˇˇˇˇˇˇˇˇÃÃˇˇˇˇôôˇˇˇˇffˇˇˇˇ33ˇˇˇˇˇˇÃÃˇˇˇˇÃÃÃÃˇˇÃÃôô    ˇˇÃÃff
  12297. ˇˇÃÃ33 ˇˇÃà ˇˇôôˇˇ
  12298. ˇˇôôÃÃˇˇôôôôˇˇôôffˇˇôô33ˇˇôôˇˇffˇˇˇˇffÃÃˇˇffôôˇˇffffˇˇff33ˇˇffˇˇ33ˇˇˇˇ33ÃÃˇˇ33ôôˇˇ33ffˇˇ3333ˇˇ33ˇˇˇˇˇˇÃàˇˇôô!ˇˇff"ˇˇ33#ˇˇ$ÃÃˇˇˇˇ%ÃÃˇˇÃÃ&ÃÃˇˇôô'ÃÃˇˇff(ÃÃˇˇ33)ÃÃˇˇ*ÃÃÃÃˇˇ+ÃÃÃÃÃÃ,ÃÃÃÃôô-ÃÃÃÃff.ÃÃÃÃ33/ÃÃÃÃ0ÃÃôôˇˇ1ÃÃôôÃÃ2ÃÃôôôô3ÃÃôôff4ÃÃôô335ÃÃôô6ÃÃffˇˇ7ÃÃffÃÃ8ÃÃffôô9ÃÃffff:ÃÃff33;ÃÃff<ÃÃ33ˇˇ=ÃÃ33ÃÃ>ÃÃ33ôô?ÃÃ33ff@ÃÃ3333AÃÃ33BÃÃˇˇCÃÃÃÃDÃÃôôEÃÃffFÃÃ33GÃÃHôôˇˇˇˇIôôˇˇÃÃJôôˇˇôôKôôˇˇffLôôˇˇ33MôôˇˇNôôÃÃˇˇOôôÃÃÃÃPôôÃÃôôQôôÃÃffRôôÃÃ33SôôÃÃTôôôôˇˇUôôôôÃÃVôôôôôôWôôôôffXôôôô33YôôôôZôôffˇˇ[ôôffÃÃ\ôôffôô]ôôffff^ôôff33_ôôff`ôô33ˇˇaôô33ÃÃbôô33ôôcôô33ffdôô3333eôô33fôôˇˇgôôÃÃhôôôôiôôffjôô33kôôlffˇˇˇˇmffˇˇÃÃnffˇˇôôoffˇˇffpffˇˇ33qffˇˇrffÃÃˇˇsffÃÃÃÃtffÃÃôôuffÃÃffvffÃÃ33wffÃÃxffôôˇˇyffôôÃÃzffôôôô{ffôôff|ffôô33}ffôô~ffffˇˇffffÃÃÄffffôôÅffffffÇffff33ÉffffÑff33ˇˇÖff33ÃÃÜff33ôôáff33ffàff3333âff33äffˇˇãffÃÃåffôôçfffféff33èffê33ˇˇˇˇë33ˇˇÃÃí33ˇˇôôì33ˇˇffî33ˇˇ33ï33ˇˇñ33ÃÃˇˇó33ÃÃÃÃò33ÃÃôôô33ÃÃffö33ÃÃ33õ33ÃÃú33ôôˇˇù33ôôÃÃû33ôôôôü33ôôff†33ôô33°33ôô¢33ffˇˇ£33ffÃç33ffôô•33ffff¶33ff33ß33ff®3333ˇˇ©3333ÃÙ3333ôô´3333ff¨333333≠3333Æ33ˇˇØ33ÃÃ∞33ôô±33ff≤3333≥33¥ˇˇˇˇµˇˇÃÃ∂ˇˇôô∑ˇˇff∏ˇˇ33πˇˇ∫ÃÃˇˇªÃÃÃúÃÃôôΩÃÃffæÃÃ33øÃÿôôˇˇ¡ôôÃìôôôô√ôôffƒôô33≈ôôΔffˇˇ«ffÃûffôô…ffff ff33ÀffÃ33ˇˇÕ33ÃÃŒ33ôôœ33ff–3333—33“ˇˇ”ÃÑôô’ff÷33◊ÿˇˇˇŸ˘`˘`˘`⁄Ú–Ú–Ú–€Ï@Ï@Ï@‹Â∞Â∞Â∞›fl fl fl fiÿêÿêÿêfl“““‡ÀpÀpÀp·ƒ‡ƒ‡ƒ‡‚æPæPæP„∑¿∑¿∑¿‰±0±0±0™†™†™†Ê§§§ÁùÄùÄùÄËñññÈê`ê`ê`Íâ–â–â–ÎÉ@É@É@Ï|∞|∞|∞Ìv v v ÓoêoêoêÔiiibpbpbpÒ[‡[‡[‡ÚUPUPUPÛN¿N¿N¿ÙH0H0H0ıA†A†A†ˆ;;;˜4Ä4Ä4į---˘'`'`'`˙ – – –˚@@@¸∞∞∞˝
  12299.  
  12300.  
  12301.  ˛êêêÄÆµ`6éÎ'ÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀÅÅÅÀ†è†É†ø
  12302. d,     Helvetica
  12303.     °dONLNdY6A@(]6Figure 5°dONLNdbBM•*  How Applications Find Components x4x&,Times
  12304. ({) 
  12305. +
  12306. 21
  12307. (è6 HELPFUL TIP*
  12308. 2You can obtain the component ID corresponding to a*
  12309. 3component instance by calling GetComponentInfo with*
  12310. 3the component instance (you’ll need to cast it as a*
  12311. )Component). The componentFlagsMask of the*
  12312. 5returned ComponentDescription record will contain the*
  12313. component ID.•4ìÚ·Ø
  12314. +Ù'1TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  12315. )”
  12316. December 1992ˇ†æ°¿9pse
  12317. currentpoint
  12318. /picTop exch def
  12319. /picLeft exch def
  12320. psb
  12321. †ø†æ°¿=pse
  12322. currentpoint
  12323. /picBottom exch def
  12324. /picRight exch def
  12325. psb
  12326. †ø†æ°¿[ -372 -125 65 164]
  12327. °¿€1 dict begin /s exch def
  12328. picLeft picTop translate
  12329. picRight picLeft sub s 2 get s 0 get sub div
  12330. picBottom picTop sub s 1 get s 3 get sub div
  12331. scale
  12332. s 0 get neg s 3 get neg translate
  12333. end
  12334. /showpage {} def
  12335. /copypage {} def
  12336. °¿ %!PS-Adobe-3.0 EPSF-3.0
  12337. %%Creator: Adobe Illustrator(TM) 3.2
  12338. %%For: (Diane Wilcox) (Apple Computer, Inc.)
  12339. %%Title: (Woodcock Fig_05MSW)
  12340. %%CreationDate: (10/2/92) (1:25 PM)
  12341. %%BoundingBox: -372 -125 65 164
  12342. %%DocumentProcessColors: Magenta Black
  12343. %%DocumentFonts: Helvetica
  12344. %%+ Helvetica-Bold
  12345. %%DocumentSuppliedResources: procset Adobe_packedarray 2.0 0
  12346. %%+ procset Adobe_cmykcolor 1.1 0
  12347. %%+ procset Adobe_cshow 1.1 0
  12348. %%+ procset Adobe_customcolor 1.0 0
  12349. %%+ procset Adobe_typography_AI3 1.0 1
  12350. %%+ procset Adobe_IllustratorA_AI3 1.0 1
  12351. %AI3_ColorUsage: Color
  12352. %AI3_TemplateBox: -196 -52 -196 -52
  12353. %AI3_TileBox: -472 -417 80 313
  12354. %AI3_DocumentPreview: Macintosh_ColorPic
  12355. %%EndComments
  12356. %%BeginProlog
  12357. %%BeginResource: procset Adobe_packedarray 2.0 0
  12358. %%Title: (Packed Array Operators)
  12359. %%Version: 2.0 
  12360. %%CreationDate: (8/2/90) ()
  12361. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  12362. userdict /Adobe_packedarray 5 dict dup begin put
  12363. /initialize            % - initialize -
  12364. {
  12365. /packedarray where
  12366.     {
  12367.     pop
  12368.     }
  12369.     {
  12370.     Adobe_packedarray begin
  12371.     Adobe_packedarray
  12372.         {
  12373.         dup xcheck
  12374.             {
  12375.             bind
  12376.             } if
  12377.         userdict 3 1 roll put
  12378.         } forall
  12379.     end
  12380.     } ifelse
  12381. } def
  12382. /terminate            % - terminate -
  12383. {
  12384. } def
  12385. /packedarray        % arguments count packedarray array
  12386. {
  12387. array astore readonly
  12388. } def
  12389. /setpacking            % boolean setpacking -
  12390. {
  12391. pop
  12392. } def
  12393. /currentpacking        % - setpacking boolean
  12394. {
  12395. false
  12396. } def
  12397. currentdict readonly pop end
  12398. %%EndResource
  12399. Adobe_packedarray /initialize get exec
  12400. %%BeginResource: procset Adobe_cmykcolor 1.1 0
  12401. %%Title: (CMYK Color Operators)
  12402. %%Version: 1.1 
  12403. %%CreationDate: (1/23/89) ()
  12404. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  12405. currentpacking true setpacking
  12406. userdict /Adobe_cmykcolor 4 dict dup begin put
  12407. /initialize            % - initialize -
  12408. {
  12409. /setcmykcolor where
  12410.     {
  12411.     pop
  12412.     }
  12413.     {
  12414.     userdict /Adobe_cmykcolor_vars 2 dict dup begin put
  12415.     /_setrgbcolor
  12416.         /setrgbcolor load def
  12417.     /_currentrgbcolor
  12418.         /currentrgbcolor load def
  12419.     Adobe_cmykcolor begin
  12420.     Adobe_cmykcolor
  12421.         {
  12422.         dup xcheck
  12423.             {
  12424.             bind
  12425.             } if
  12426.         pop pop
  12427.         } forall
  12428.     end
  12429.     end
  12430.     Adobe_cmykcolor begin
  12431.     } ifelse
  12432. } def
  12433. /terminate            % - terminate -
  12434. {
  12435. currentdict Adobe_cmykcolor eq
  12436.     {
  12437.     end
  12438.     } if
  12439. } def
  12440. /setcmykcolor        % cyan magenta yellow black setcmykcolor -
  12441. {
  12442. 1 sub 4 1 roll
  12443. 3
  12444.     {
  12445.     3 index add neg dup 0 lt
  12446.         {
  12447.         pop 0
  12448.         } if
  12449.     3 1 roll
  12450.     } repeat
  12451. Adobe_cmykcolor_vars /_setrgbcolor get exec
  12452. pop
  12453. } def 
  12454. /currentcmykcolor    % - currentcmykcolor cyan magenta yellow black
  12455. {
  12456. Adobe_cmykcolor_vars /_currentrgbcolor get exec
  12457. 3
  12458.     {
  12459.     1 sub neg 3 1 roll
  12460.     } repeat
  12461. 0
  12462. } def
  12463. currentdict readonly pop end
  12464. setpacking
  12465. %%EndResource
  12466. %%BeginResource: procset Adobe_cshow 1.1 0
  12467. %%Title: (cshow Operator)
  12468. %%Version: 1.1 
  12469. %%CreationDate: (1/23/89) ()
  12470. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  12471. currentpacking true setpacking
  12472. userdict /Adobe_cshow 3 dict dup begin put
  12473. /initialize            % - initialize -
  12474. {
  12475. /cshow where
  12476.     {
  12477.     pop
  12478.     }
  12479.     {
  12480.     userdict /Adobe_cshow_vars 1 dict dup begin put
  12481.     /_cshow        % - _cshow proc
  12482.         {} def
  12483.     Adobe_cshow begin
  12484.     Adobe_cshow
  12485.         {
  12486.         dup xcheck
  12487.             {
  12488.             bind
  12489.             } if
  12490.         userdict 3 1 roll put
  12491.         } forall
  12492.     end
  12493.     end
  12494.     } ifelse
  12495. } def
  12496. /terminate            % - terminate -
  12497. {
  12498. } def
  12499. /cshow                % proc string cshow -
  12500. {
  12501. exch
  12502. Adobe_cshow_vars
  12503.     exch /_cshow
  12504.     exch put
  12505.     {
  12506.     0 0 Adobe_cshow_vars /_cshow get exec
  12507.     } forall
  12508. } def
  12509. currentdict readonly pop end
  12510. setpacking
  12511. %%EndResource
  12512. %%BeginResource: procset Adobe_customcolor 1.0 0
  12513. %%Title: (Custom Color Operators)
  12514. %%Version: 1.0 
  12515. %%CreationDate: (5/9/88) ()
  12516. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  12517. currentpacking true setpacking
  12518. userdict /Adobe_customcolor 5 dict dup begin put
  12519. /initialize            % - initialize -
  12520. {
  12521. /setcustomcolor where
  12522.     {
  12523.     pop
  12524.     }
  12525.     {
  12526.     Adobe_customcolor begin
  12527.     Adobe_customcolor
  12528.         {
  12529.         dup xcheck
  12530.             {
  12531.             bind
  12532.             } if
  12533.         pop pop
  12534.         } forall
  12535.     end
  12536.     Adobe_customcolor begin
  12537.     } ifelse
  12538. } def
  12539. /terminate            % - terminate -
  12540. {
  12541. currentdict Adobe_customcolor eq
  12542.     {
  12543.     end
  12544.     } if
  12545. } def
  12546. /findcmykcustomcolor    % cyan magenta yellow black name findcmykcustomcolor object
  12547. {
  12548. 5 packedarray
  12549. }  def
  12550. /setcustomcolor        % object tint setcustomcolor -
  12551. {
  12552. exch
  12553. aload pop pop
  12554. 4
  12555.     {
  12556.     4 index mul 4 1 roll
  12557.     } repeat
  12558. 5 -1 roll pop
  12559. setcmykcolor
  12560. } def
  12561. /setoverprint        % boolean setoverprint -
  12562. {
  12563. pop
  12564. } def
  12565. currentdict readonly pop end
  12566. setpacking
  12567. %%EndResource
  12568. %%BeginResource: procset Adobe_typography_AI3 1.1 0
  12569. %%Title: (Typography Operators)
  12570. %%Version: 1.0 
  12571. %%CreationDate:(5/31/90) ()
  12572. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  12573. currentpacking true setpacking
  12574. userdict /Adobe_typography_AI3 47 dict dup begin put
  12575. /initialize            % - initialize -
  12576. {
  12577. /TZ
  12578.  where
  12579.     {
  12580.     pop
  12581.     }
  12582.     {
  12583.     Adobe_typography_AI3 begin
  12584.     Adobe_typography_AI3
  12585.         {
  12586.         dup xcheck
  12587.             {
  12588.             bind
  12589.             } if
  12590.         pop pop
  12591.         } forall
  12592.     end
  12593.     Adobe_typography_AI3 begin
  12594.     } ifelse
  12595. } def
  12596. /terminate            % - terminate -
  12597. {
  12598. currentdict Adobe_typography_AI3 eq
  12599.     {
  12600.     end
  12601.     } if
  12602. } def
  12603. % [ number value stream [ array for encoding modification ] modifyEncoding ==> [ modified array ]
  12604. /modifyEncoding
  12605. {
  12606.     /_tempEncode exch ddef
  12607.     
  12608.     % pointer for sequential encodings
  12609.     /_pntr 0 ddef
  12610.     
  12611.     {
  12612.         % get bottom object
  12613.         counttomark -1 roll
  12614.         % is it a mark ?
  12615.         dup type dup /marktype eq         
  12616.         {
  12617.             % exit
  12618.             pop pop exit
  12619.         }
  12620.         {
  12621.             % ... object ... type ....
  12622.             % insert if a nametype
  12623.             /nametype eq
  12624.             {
  12625.                 % insert the name at _pntr and increment pointer
  12626.                 _tempEncode /_pntr dup load dup 3 1 roll 1 add ddef 3 -1 roll
  12627.                 put
  12628.             }
  12629.             {
  12630.                 % reset _pntr if it's a number
  12631.                 /_pntr exch ddef                    
  12632.             }
  12633.             ifelse
  12634.         }
  12635.         ifelse
  12636.     }
  12637.     loop    
  12638.     
  12639.     % return the modified encoding
  12640.     _tempEncode
  12641. }
  12642. def
  12643. /TE    % Set std platform encoding     % (encoding pairs) TE -
  12644. {
  12645.     StandardEncoding 256 array copy modifyEncoding 
  12646.     /_nativeEncoding exch def
  12647. } def
  12648. % re-define font
  12649. % expected arguments
  12650. % for 'normal fonts : 
  12651. % [ /_Helvetica-Bold/Helvetica-Bold direction fontScript defaultEncoding TZ
  12652. %
  12653. % for cartographic, pictographic, and expert fonts :
  12654. % [ ... number value stream ... /_Symbol/Symbol 
  12655. %    direction fontScript defaultEncoding TZ
  12656. % for blended fonts w/ default encoding :
  12657. % [ /_AdobeSans_20ULig1XCond-Bold/AdobeSans 
  12658. %    direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
  12659. % for blended fonts w/ special encoding :
  12660. % [ ... number value stream ... /_AdobeSans_20ULig1XCond/AdobeSans 
  12661. %    direction fontScript defaultEncoding [ w0 w1 ... wn ] TZ
  12662. /TZ        
  12663. {
  12664.     % set weight vector (if present)
  12665.     dup type /arraytype eq {/_wv exch def} {/_wv 0 def} ifelse 
  12666.     % platform dependent coding flag
  12667.     /_useNativeEncoding exch def
  12668.     % pop fontScript & direction
  12669.     pop pop
  12670.     
  12671.     % create a new dictionary with length
  12672.     % equal to original dictionary length + 2
  12673.     % copy all the key/value pairs except FID
  12674.     % call makeblended font with the weight values if _wv is an array
  12675.     findfont _wv type /arraytype eq {_wv makeblendedfont} if dup length 2 add dict
  12676.     
  12677.     begin
  12678.     
  12679.         % copy all the values but the FID
  12680.         % into the new dictionary
  12681.         mark exch
  12682.         {
  12683.             1 index /FID ne { def } if cleartomark mark
  12684.         }
  12685.         forall
  12686.         % discard last mark
  12687.         pop
  12688.         
  12689.         % define FontName
  12690.         /FontName exch def
  12691.         
  12692.         % if no re-encoding stream is present
  12693.         % then if the base encoding vector of the font
  12694.         % is the same as StandardEncoding
  12695.         % and the use platform encoding flag is true
  12696.         % then install AI platform encoding
  12697.         % else leave the base encoding in effect
  12698.         counttomark 0 eq
  12699.         {
  12700.             1 _useNativeEncoding eq
  12701.             {
  12702.                 /Encoding _nativeEncoding def
  12703.             }
  12704.             if
  12705.             % clean up
  12706.             cleartomark
  12707.         }
  12708.         {    
  12709.             % custom encoding to be done
  12710.             % start off with a copy of the font's standard encoding
  12711.             /Encoding load 256 array copy 
  12712.             modifyEncoding /Encoding exch def
  12713.         }
  12714.         ifelse        
  12715.         FontName currentdict
  12716.     end
  12717.     
  12718.     % register the new font
  12719.     definefont pop
  12720. }
  12721. def
  12722. % text painting operators
  12723. /tr                    % string tr ax ay string 
  12724. {
  12725. _ax _ay 3 2 roll
  12726. } def
  12727. /trj                % string trj cx cy fillchar ax ay string 
  12728. {
  12729. _cx _cy _sp _ax _ay 6 5 roll
  12730. } def
  12731. /a0
  12732. {
  12733. /Tx    % text                            % textString Tx -
  12734.     {
  12735.     dup 
  12736.     currentpoint 3 2 roll
  12737.     tr _psf
  12738.     newpath moveto
  12739.     tr _ctm _pss
  12740.     } ddef
  12741. /Tj    % justified text                % textString Tj -
  12742.     {
  12743.     dup
  12744.     currentpoint 3 2 roll
  12745.     trj _pjsf
  12746.     newpath moveto
  12747.     trj _ctm _pjss
  12748.     } ddef
  12749.     
  12750. } def
  12751. /a1
  12752. {
  12753. /Tx    % text                            % textString Tx -
  12754.     {
  12755.     dup currentpoint 4 2 roll gsave
  12756.     dup currentpoint 3 2 roll
  12757.     tr _psf
  12758.     ne°¿ wpath moveto
  12759.     tr _ctm _pss
  12760.     grestore 3 1 roll moveto tr sp
  12761.     } ddef
  12762. /Tj    % justified text                % textString Tj -
  12763.     {
  12764.     dup currentpoint 4 2 roll gsave
  12765.     dup currentpoint 3 2 roll
  12766.     trj _pjsf
  12767.     newpath moveto
  12768.     trj _ctm _pjss
  12769.     grestore 3 1 roll moveto tr sp
  12770.     } ddef
  12771.     
  12772. } def
  12773. /e0
  12774. {
  12775. /Tx    % text                            % textString Tx -
  12776.     {
  12777.     tr _psf
  12778.     } ddef
  12779. /Tj    % justified text                % textString Tj -
  12780.     {
  12781.     trj _pjsf
  12782.     } ddef
  12783. } def
  12784. /e1
  12785. {
  12786. /Tx    % text                            % textString Tx -
  12787.     {
  12788.     dup currentpoint 4 2 roll gsave 
  12789.     tr _psf  
  12790.     grestore 3 1 roll moveto tr sp 
  12791.     } ddef
  12792. /Tj    % justified text                % textString Tj -
  12793.     {
  12794.     dup currentpoint 4 2 roll gsave 
  12795.     trj _pjsf
  12796.     grestore 3 1 roll moveto tr sp 
  12797.     } ddef
  12798. } def
  12799. /i0
  12800. {
  12801. /Tx    % text                            % textString Tx -
  12802.     {
  12803.     tr sp
  12804.     } ddef
  12805. /Tj    % justified text                % textString Tj -
  12806.     {
  12807.     trj jsp
  12808.     } ddef
  12809. } def
  12810. /i1
  12811. {
  12812. W N
  12813. } def
  12814. /o0
  12815. {
  12816. /Tx    % text                            % textString Tx -
  12817.     {
  12818.     tr sw rmoveto
  12819.     } ddef
  12820. /Tj    % justified text                % textString Tj -
  12821.     {
  12822.     trj swj rmoveto
  12823.     } ddef
  12824. } def
  12825. /r0
  12826. {
  12827. /Tx    % text                            % textString Tx -
  12828.     {
  12829.     tr _ctm _pss
  12830.     } ddef
  12831. /Tj    % justified text                % textString Tj -
  12832.     {
  12833.     trj _ctm _pjss
  12834.     } ddef
  12835. } def
  12836. /r1
  12837. {
  12838. /Tx    % text                            % textString Tx -
  12839.     {
  12840.     dup currentpoint 4 2 roll currentpoint gsave newpath moveto
  12841.     tr _ctm _pss 
  12842.     grestore 3 1 roll moveto tr sp 
  12843.     } ddef
  12844. /Tj    % justified text                % textString Tj -
  12845.     {
  12846.     dup currentpoint 4 2 roll currentpoint gsave newpath moveto
  12847.     trj _ctm _pjss
  12848.     grestore 3 1 roll moveto tr sp 
  12849.     } ddef
  12850. } def
  12851. % font operators
  12852. % Binding
  12853. /To    % begin text                     % bindType To -
  12854. {
  12855.     pop _ctm currentmatrix pop
  12856. } def
  12857. /TO    % end text                    % TO -
  12858. {
  12859.     Te _ctm setmatrix newpath
  12860. } def
  12861. % Text paths
  12862. /Tp    % begin text path                % a b c d tx ty startPt Tp -
  12863. {
  12864.     pop _tm astore pop _ctm setmatrix 
  12865.     _tDict begin /W {} def /h {} def
  12866. } def
  12867. /TP    % end text path                    % TP -
  12868. {
  12869.     end
  12870.     iTm 0 0 moveto
  12871. } def
  12872. % Render mode & matrix operators
  12873. /Tr    % begin render                    % render Tr - 
  12874. {
  12875.     _render 3 le {currentpoint newpath moveto} if
  12876.     dup 8 eq {pop 0} {dup 9 eq {pop 1} if} ifelse
  12877.     dup /_render exch ddef
  12878.     _renderStart exch get load exec
  12879. } def
  12880. /iTm % internal set text matrix        % - iTm -    (uses _tm as implicit argument)
  12881. {
  12882. _ctm setmatrix _tm concat 0 _rise translate _hs 1 scale
  12883. } def
  12884. /Tm % set text matrix                % a b c d tx ty Tm -
  12885. {
  12886. _tm astore pop iTm 0 0 moveto
  12887. } def
  12888. /Td % translate text matrix         % tx ty Td -
  12889. {
  12890. _mtx translate _tm _tm concatmatrix pop iTm 0 0 moveto
  12891. } def
  12892. /Te    % end render                    % - Te -
  12893. {
  12894.     _render -1 eq {} {_renderEnd _render get dup null ne {load exec} {pop} ifelse} ifelse
  12895.     /_render -1 ddef
  12896. } def
  12897. % Attributes
  12898. /Ta    % set alignment                    % alignment Ta -
  12899. {
  12900. pop
  12901. } def
  12902. /Tf    % set font name and size        % fontname size Tf -
  12903. {
  12904. dup 1000 div /_fScl exch ddef
  12905. exch findfont exch scalefont setfont
  12906. } def
  12907. /Tl    % set leading                    % leading paragraphLeading Tl -
  12908. {
  12909. pop
  12910. 0 exch _leading astore pop
  12911. } def
  12912. /Tt    % set user tracking                % userTracking Tt -
  12913. {
  12914. pop
  12915. } def
  12916. /TW % set word spacing                % minSpace optSpace maxSpace TW -
  12917. {
  12918. 3 npop
  12919. } def
  12920. /Tw    % set computed word spacing        % wordSpace Tw
  12921. {
  12922. /_cx exch ddef
  12923. } def
  12924. /TC % set character spacing            % minSpace optSpace maxSpace TC -
  12925. {
  12926. 3 npop
  12927. } def
  12928. /Tc    % set computed char spacing     % charSpace Tc -
  12929. {
  12930. /_ax exch ddef
  12931. } def
  12932. /Ts % set super/subscripting (rise)    % rise Ts -
  12933. {
  12934. /_rise exch ddef
  12935. currentpoint
  12936. iTm
  12937. moveto
  12938. } def
  12939. /Ti    % set indentation                % firstStartIndent otherStartIndent stopIndent Ti -
  12940. {
  12941. 3 npop
  12942. } def
  12943. /Tz % set horizontal scaling        % scalePercent Tz -
  12944. {
  12945. 100 div /_hs exch ddef
  12946. iTm
  12947. } def
  12948. /TA % set pairwise kerning            % autoKern TA -
  12949.                                     %    autoKern = 0 -> no pair kerning
  12950.                                     %             = 1 -> automatic pair kerning
  12951. {
  12952. pop
  12953. } def
  12954. /Tq % set hanging quotes            % hangingQuotes Tq -
  12955.                                     %    hangingQuotes     = 0 -> no hanging quotes
  12956.                                     %                     = 1 -> hanging quotes
  12957. {
  12958. pop
  12959. } def
  12960. % Text Bodies
  12961. /TX {pop} def
  12962. %/Tx    % non-justified text            % textString Tx -
  12963. %/Tj    % justified text                % textString Tj -
  12964. /Tk    % kern                            % autoKern kernValue Tk -
  12965.                                     %      autoKern = 0 -> manual kern, = 1 -> auto kern
  12966.                                     %    kernValue = kern value in em/1000 space
  12967. {
  12968. exch pop _fScl mul neg 0 rmoveto
  12969. } def
  12970. /TK    % non-printing kern                % autoKern kernValue TK -
  12971. {
  12972. 2 npop
  12973. } def
  12974. /T* % carriage return & line feed    % - T* -
  12975. {
  12976. _leading aload pop neg Td
  12977. } def
  12978. /T*- % carriage return & negative line feed    % - T*- -
  12979. {
  12980. _leading aload pop Td
  12981. } def
  12982. /T-    % print a discretionary hyphen    % - T- -
  12983. {
  12984. _hyphen Tx
  12985. } def
  12986. /T+    % discretionary hyphen hyphen    % - T+ -
  12987. {} def
  12988. /TR    % reset pattern matrix             % a b c d tx ty TR -
  12989. {
  12990. _ctm currentmatrix pop     
  12991. _tm astore pop 
  12992. iTm 0 0 moveto 
  12993. } def
  12994. /TS    % special chars                    % textString justified TS -
  12995. {
  12996. 0 eq {Tx} {Tj} ifelse
  12997. } def
  12998. currentdict readonly pop end
  12999. setpacking
  13000. %%EndResource
  13001. %%BeginResource: procset Adobe_IllustratorA_AI3 1.0 2
  13002. %%Title: (Adobe Illustrator (R) Version 3.0 Abbreviated Prolog)
  13003. %%Version: 1.0 
  13004. %%CreationDate: (7/22/89) ()
  13005. %%Copyright: ((C) 1987-1990 Adobe Systems Incorporated All Rights Reserved)
  13006. currentpacking true setpacking
  13007. userdict /Adobe_IllustratorA_AI3 61 dict dup begin put
  13008. % initialization
  13009. /initialize                % - initialize -
  13010. {
  13011. % 47 vars, but leave slack of 10 entries for custom Postscript fragments
  13012. userdict /Adobe_IllustratorA_AI3_vars 57 dict dup begin put
  13013. % paint operands
  13014. /_lp /none def
  13015. /_pf {} def
  13016. /_ps {} def
  13017. /_psf {} def
  13018. /_pss {} def
  13019. /_pjsf {} def
  13020. /_pjss {} def
  13021. /_pola 0 def
  13022. /_doClip 0 def
  13023. % paint operators
  13024. /cf    currentflat def    % - cf flatness
  13025. % typography operands
  13026. /_tm matrix def
  13027. /_renderStart [/e0 /r0 /a0 /o0 /e1 /r1 /a1 /i0] def 
  13028. /_renderEnd [null null null null /i1 /i1 /i1 /i1] def
  13029. /_render -1 def
  13030. /_rise 0 def
  13031. /_ax 0 def            % x character spacing    (_ax, _ay, _cx, _cy follows awidthshow naming convention)
  13032. /_ay 0 def            % y character spacing
  13033. /_cx 0 def            % x word spacing
  13034. /_cy 0 def            % y word spacing
  13035. /_leading [0 0] def
  13036. /_ctm matrix def
  13037. /_mtx matrix def
  13038. /_sp 16#020 def
  13039. /_hyphen (-) def
  13040. /_fScl 0 def
  13041. /_cnt 0 def
  13042. /_hs 1 def
  13043. /_nativeEncoding 0 def
  13044. /_useNativeEncoding 0 def
  13045. /_tempEncode 0 def
  13046. /_pntr 0 def
  13047. /_tDict 2 dict def
  13048. % typography operators
  13049. /Tx {} def
  13050. /Tj {} def
  13051. % compound path operators
  13052. /CRender {} def
  13053. % printing
  13054. /_AI3_savepage {} def
  13055. % color operands
  13056. /_gf null def
  13057. /_cf 4 array def
  13058. /_if null def
  13059. /_of false def
  13060. /_fc {} def
  13061. /_gs null def
  13062. /_cs 4 array def
  13063. /_is null def
  13064. /_os false def
  13065. /_sc {} def
  13066. /_i null def
  13067. Adobe_IllustratorA_AI3 begin
  13068. Adobe_IllustratorA_AI3
  13069.     {
  13070.     dup xcheck
  13071.         {
  13072.         bind
  13073.         } if
  13074.     pop pop
  13075.     } forall
  13076. end
  13077. end
  13078. Adobe_IllustratorA_AI3 begin
  13079. Adobe_IllustratorA_AI3_vars begin
  13080. newpath
  13081. } def
  13082. /terminate                % - terminate -
  13083. {
  13084. end
  13085. end
  13086. } def
  13087. % definition operators
  13088. /_                    % - _ null
  13089. null def
  13090. /ddef                % key value ddef -
  13091. {
  13092. Adobe_IllustratorA_AI3_vars 3 1 roll put
  13093. } def
  13094. /xput                % key value literal xput -
  13095. {
  13096. dup load dup length exch maxlength eq
  13097.     {
  13098.     dup dup load dup
  13099.     length 2 mul dict copy def
  13100.     } if
  13101. load begin def end
  13102. } def
  13103. /npop                % integer npop -
  13104. {
  13105.     {
  13106.     pop
  13107.     } repeat
  13108. } def
  13109. % marking operators
  13110. /sw                    % ax ay string sw x y 
  13111. {
  13112. dup length exch stringwidth
  13113. exch 5 -1 roll 3 index 1 sub mul add
  13114. 4 1 roll 3 1 roll 1 sub mul add
  13115. } def
  13116. /swj                % cx cy fillchar ax ay string swj x y
  13117. {
  13118. dup 4 1 roll
  13119. dup length exch stringwidth 
  13120. exch 5 -1 roll 3 index 1 sub mul add
  13121. 4 1 roll 3 1 roll 1 sub mul add 
  13122. 6 2 roll /_cnt 0 ddef
  13123. {1 index eq {/_cnt _cnt 1 add ddef} if} forall pop
  13124. exch _cnt mul exch _cnt mul 2 index add 4 1 roll 2 index add 4 1 roll pop pop
  13125. } def
  13126. /ss                    % ax ay string matrix ss -
  13127. {
  13128. 4 1 roll
  13129.     {                % matrix ax ay char 0 0 {proc} -
  13130.     2 npop 
  13131.     (0) exch 2 copy 0 exch put pop
  13132.     gsave
  13133.     false charpath currentpoint
  13134.     4 index setmatrix
  13135.     stroke
  13136.     grestore
  13137.     moveto
  13138.     2 copy rmoveto
  13139.     } exch cshow
  13140. 3 npop
  13141. } def
  13142. /jss                % cx cy fillchar ax ay string matrix jss -
  13143. {
  13144. 4 1 roll
  13145.     {                % cx cy fillchar matrix ax ay char 0 0 {proc} -   
  13146.     2 npop 
  13147.     (0) exch 2 copy 0 exch put 
  13148.     gsave
  13149.     _sp eq 
  13150.         {
  13151.         exch 6 index 6 index 6 index 5 -1 roll widthshow  
  13152.         currentpoint
  13153.         }
  13154.         {
  13155.         false charpath currentpoint
  13156.         4 index setmatrix stroke
  13157.         }ifelse
  13158.     grestore
  13159.     moveto
  13160.     2 copy rmoveto
  13161.     } exch cshow
  13162. 6 npop
  13163. } def
  13164. % path operators
  13165. /sp                    % ax ay string sp -
  13166. {
  13167.     {
  13168.     2 npop (0) exch
  13169.     2 copy 0 exch put pop
  13170.     false charpath
  13171.     2 copy rmoveto
  13172.     } exch cshow
  13173. 2 npop
  13174. } def
  13175. /jsp                    % cx cy fillchar ax ay string jsp -
  13176. {
  13177.     {                    % cx cy fillchar ax ay char 0 0 {proc} -
  13178.     2 npop 
  13179.     (0) exch 2 copy 0 exch put 
  13180.     _sp eq 
  13181.         {
  13182.         exch 5 index 5 index 5 index 5 -1 roll w°¿ idthshow  
  13183.         }
  13184.         {
  13185.         false charpath
  13186.         }ifelse
  13187.     2 copy rmoveto
  13188.     } exch cshow
  13189. 5 npop
  13190. } def
  13191. % path construction operators
  13192. /pl                % x y pl x y
  13193. {
  13194. transform
  13195. 0.25 sub round 0.25 add exch
  13196. 0.25 sub round 0.25 add exch
  13197. itransform
  13198. } def
  13199. /setstrokeadjust where
  13200.     {
  13201.     pop true setstrokeadjust
  13202.     /c                % x1 y1 x2 y2 x3 y3 c -
  13203.     {
  13204.     curveto
  13205.     } def
  13206.     /C
  13207.     /c load def
  13208.     /v                % x2 y2 x3 y3 v -
  13209.     {
  13210.     currentpoint 6 2 roll curveto
  13211.     } def
  13212.     /V
  13213.     /v load def
  13214.     /y                % x1 y1 x2 y2 y -
  13215.     {
  13216.     2 copy curveto
  13217.     } def
  13218.     /Y
  13219.     /y load def
  13220.     /l                % x y l -
  13221.     {
  13222.     lineto
  13223.     } def
  13224.     /L
  13225.     /l load def
  13226.     /m                % x y m -
  13227.     {
  13228.     moveto
  13229.     } def
  13230.     }
  13231.     {%else
  13232.     /c
  13233.     {
  13234.     pl curveto
  13235.     } def
  13236.     /C
  13237.     /c load def
  13238.     /v
  13239.     {
  13240.     currentpoint 6 2 roll pl curveto
  13241.     } def
  13242.     /V
  13243.     /v load def
  13244.     /y
  13245.     {
  13246.     pl 2 copy curveto
  13247.     } def
  13248.     /Y
  13249.     /y load def
  13250.     /l
  13251.     {
  13252.     pl lineto
  13253.     } def
  13254.     /L
  13255.     /l load def
  13256.     /m
  13257.     {
  13258.     pl moveto
  13259.     } def
  13260.     }ifelse
  13261. % graphic state operators
  13262. /d                    % array phase d -
  13263. {
  13264. setdash
  13265. } def
  13266. /cf    {} def            % - cf flatness
  13267. /i                    % flatness i -
  13268. {
  13269. dup 0 eq
  13270.     {
  13271.     pop cf
  13272.     } if
  13273. setflat
  13274. } def
  13275. /j                    % linejoin j -
  13276. {
  13277. setlinejoin
  13278. } def
  13279. /J                    % linecap J -
  13280. {
  13281. setlinecap
  13282. } def
  13283. /M                    % miterlimit M -
  13284. {
  13285. setmiterlimit
  13286. } def
  13287. /w                    % linewidth w -
  13288. {
  13289. setlinewidth
  13290. } def
  13291. % path painting operators
  13292. /H                    % - H -
  13293. {} def
  13294. /h                    % - h -
  13295. {
  13296. closepath
  13297. } def
  13298. /N                    % - N -
  13299. {
  13300. _pola 0 eq 
  13301.     {
  13302.     _doClip 1 eq {clip /_doClip 0 ddef} if 
  13303.     newpath
  13304.     } 
  13305.     {
  13306.     /CRender {N} ddef
  13307.     }ifelse
  13308. } def
  13309. /n                    % - n -
  13310. {N} def
  13311. /F                    % - F -
  13312. {
  13313. _pola 0 eq 
  13314.     {
  13315.     _doClip 1 eq 
  13316.         {
  13317.         gsave _pf grestore clip newpath /_lp /none ddef _fc 
  13318.         /_doClip 0 ddef
  13319.         }
  13320.         {
  13321.         _pf
  13322.         }ifelse
  13323.     } 
  13324.     {
  13325.     /CRender {F} ddef
  13326.     }ifelse
  13327. } def
  13328. /f                    % - f -
  13329. {
  13330. closepath
  13331. F
  13332. } def
  13333. /S                    % - S -
  13334. {
  13335. _pola 0 eq 
  13336.     {
  13337.     _doClip 1 eq 
  13338.         {
  13339.         gsave _ps grestore clip newpath /_lp /none ddef _sc 
  13340.         /_doClip 0 ddef
  13341.         }
  13342.         {
  13343.         _ps
  13344.         }ifelse
  13345.     } 
  13346.     {
  13347.     /CRender {S} ddef
  13348.     }ifelse
  13349. } def
  13350. /s                    % - s -
  13351. {
  13352. closepath
  13353. S
  13354. } def
  13355. /B                    % - B -
  13356. {
  13357. _pola 0 eq 
  13358.     {
  13359.     _doClip 1 eq     % F clears _doClip
  13360.     gsave F grestore 
  13361.         {
  13362.         gsave S grestore clip newpath /_lp /none ddef _sc
  13363.         /_doClip 0 ddef
  13364.         } 
  13365.         {
  13366.         S
  13367.         }ifelse
  13368.     }
  13369.     {
  13370.     /CRender {B} ddef
  13371.     }ifelse
  13372. } def
  13373. /b                    % - b -
  13374. {
  13375. closepath
  13376. B
  13377. } def
  13378. /W                    % - W -
  13379. {
  13380. /_doClip 1 ddef
  13381. } def
  13382. /*                    % - [string] * -
  13383. {
  13384. count 0 ne 
  13385.     {
  13386.     dup type (stringtype) eq {pop} if
  13387.     } if 
  13388. _pola 0 eq {newpath} if
  13389. } def
  13390. % group operators
  13391. /u                    % - u -
  13392. {} def
  13393. /U                    % - U -
  13394. {} def
  13395. /q                    % - q -
  13396. {
  13397. _pola 0 eq {gsave} if
  13398. } def
  13399. /Q                    % - Q -
  13400. {
  13401. _pola 0 eq {grestore} if
  13402. } def
  13403. /*u                    % - *u -
  13404. {
  13405. _pola 1 add /_pola exch ddef
  13406. } def
  13407. /*U                    % - *U -
  13408. {
  13409. _pola 1 sub /_pola exch ddef 
  13410. _pola 0 eq {CRender} if
  13411. } def
  13412. /D                    % polarized D -
  13413. {pop} def
  13414. /*w                    % - *w -
  13415. {} def
  13416. /*W                    % - *W -
  13417. {} def
  13418. % place operators
  13419. /`                    % matrix llx lly urx ury string ` -
  13420. {
  13421. /_i save ddef
  13422. 6 1 roll 4 npop
  13423. concat pop
  13424. userdict begin
  13425. /showpage {} def
  13426. 0 setgray
  13427. 0 setlinecap
  13428. 1 setlinewidth
  13429. 0 setlinejoin
  13430. 10 setmiterlimit
  13431. [] 0 setdash
  13432. newpath
  13433. 0 setgray
  13434. false setoverprint
  13435. } def
  13436. /~                    % - ~ -
  13437. {
  13438. end
  13439. _i restore
  13440. } def
  13441. % color operators
  13442. /O                    % flag O -
  13443. {
  13444. 0 ne
  13445. /_of exch ddef
  13446. /_lp /none ddef
  13447. } def
  13448. /R                    % flag R -
  13449. {
  13450. 0 ne
  13451. /_os exch ddef
  13452. /_lp /none ddef
  13453. } def
  13454. /g                    % gray g -
  13455. {
  13456. /_gf exch ddef
  13457. /_fc
  13458. _lp /fill ne
  13459.     {
  13460.     _of setoverprint
  13461.     _gf setgray
  13462.     /_lp /fill ddef
  13463.     } if
  13464. } ddef
  13465. /_pf
  13466. {
  13467. _fc
  13468. fill
  13469. } ddef
  13470. /_psf
  13471. {
  13472. _fc
  13473. ashow
  13474. } ddef
  13475. /_pjsf
  13476. {
  13477. _fc
  13478. awidthshow
  13479. } ddef
  13480. /_lp /none ddef
  13481. } def
  13482. /G                    % gray G -
  13483. {
  13484. /_gs exch ddef
  13485. /_sc
  13486. {
  13487. _lp /stroke ne
  13488.     {
  13489.     _os setoverprint
  13490.     _gs setgray
  13491.     /_lp /stroke ddef
  13492.     } if
  13493. } ddef
  13494. /_ps
  13495. {
  13496. _sc
  13497. stroke
  13498. } ddef
  13499. /_pss
  13500. {
  13501. _sc
  13502. ss
  13503. } ddef
  13504. /_pjss
  13505. {
  13506. _sc
  13507. jss
  13508. } ddef
  13509. /_lp /none ddef
  13510. } def
  13511. /k                    % cyan magenta yellow black k -
  13512. {
  13513. _cf astore pop
  13514. /_fc
  13515. {
  13516. _lp /fill ne
  13517.     {
  13518.     _of setoverprint
  13519.     _cf aload pop setcmykcolor
  13520.     /_lp /fill ddef
  13521.     } if
  13522. } ddef
  13523. /_pf
  13524. {
  13525. _fc
  13526. fill
  13527. } ddef
  13528. /_psf
  13529. {
  13530. _fc
  13531. ashow
  13532. } ddef
  13533. /_pjsf
  13534. {
  13535. _fc
  13536. awidthshow
  13537. } ddef
  13538. /_lp /none ddef
  13539. } def
  13540. /K                    % cyan magenta yellow black K -
  13541. {
  13542. _cs astore pop
  13543. /_sc
  13544. {
  13545. _lp /stroke ne
  13546.     {
  13547.     _os setoverprint
  13548.     _cs aload pop setcmykcolor
  13549.     /_lp /stroke ddef
  13550.     } if
  13551. } ddef
  13552. /_ps
  13553. {
  13554. _sc
  13555. stroke
  13556. } ddef
  13557. /_pss
  13558. {
  13559. _sc
  13560. ss
  13561. } ddef
  13562. /_pjss
  13563. {
  13564. _sc
  13565. jss
  13566. } ddef
  13567. /_lp /none ddef
  13568. } def
  13569. /x                    % cyan magenta yellow black name gray x -
  13570. {
  13571. /_gf exch ddef
  13572. findcmykcustomcolor
  13573. /_if exch ddef
  13574. /_fc
  13575. _lp /fill ne
  13576.     {
  13577.     _of setoverprint
  13578.     _if _gf 1 exch sub setcustomcolor
  13579.     /_lp /fill ddef
  13580.     } if
  13581. } ddef
  13582. /_pf
  13583. {
  13584. _fc
  13585. fill
  13586. } ddef
  13587. /_psf
  13588. {
  13589. _fc
  13590. ashow
  13591. } ddef
  13592. /_pjsf
  13593. {
  13594. _fc
  13595. awidthshow
  13596. } ddef
  13597. /_lp /none ddef
  13598. } def
  13599. /X                    % cyan magenta yellow black name gray X -
  13600. {
  13601. /_gs exch ddef
  13602. findcmykcustomcolor
  13603. /_is exch ddef
  13604. /_sc
  13605. {
  13606. _lp /stroke ne
  13607.     {
  13608.     _os setoverprint
  13609.     _is _gs 1 exch sub setcustomcolor
  13610.     /_lp /stroke ddef
  13611.     } if
  13612. } ddef
  13613. /_ps
  13614. {
  13615. _sc
  13616. stroke
  13617. } ddef
  13618. /_pss
  13619. {
  13620. _sc
  13621. ss
  13622. } ddef
  13623. /_pjss
  13624. {
  13625. _sc
  13626. jss
  13627. } ddef
  13628. /_lp /none ddef
  13629. } def
  13630. % locked object operator
  13631. /A                    % value A -
  13632. {
  13633. pop
  13634. } def
  13635. currentdict readonly pop end
  13636. setpacking
  13637. % annotate page operator
  13638. /annotatepage
  13639. {
  13640. } def
  13641. %%EndResource
  13642. %%EndProlog
  13643. %%BeginSetup
  13644. %%IncludeFont: Helvetica
  13645. %%IncludeFont: Helvetica-Bold
  13646. Adobe_cmykcolor /initialize get exec
  13647. Adobe_cshow /initialize get exec
  13648. Adobe_customcolor /initialize get exec
  13649. Adobe_typography_AI3 /initialize get exec
  13650. Adobe_IllustratorA_AI3 /initialize get exec
  13651. [
  13652. 39/quotesingle 96/grave 128/Adieresis/Aring/Ccedilla/Eacute/Ntilde/Odieresis
  13653. /Udieresis/aacute/agrave/acircumflex/adieresis/atilde/aring/ccedilla/eacute
  13654. /egrave/ecircumflex/edieresis/iacute/igrave/icircumflex/idieresis/ntilde
  13655. /oacute/ograve/ocircumflex/odieresis/otilde/uacute/ugrave/ucircumflex
  13656. /udieresis/dagger/degree/cent/sterling/section/bullet/paragraph/germandbls
  13657. /registered/copyright/trademark/acute/dieresis/.notdef/AE/Oslash
  13658. /.notdef/plusminus/.notdef/.notdef/yen/mu/.notdef/.notdef
  13659. /.notdef/.notdef/.notdef/ordfeminine/ordmasculine/.notdef/ae/oslash
  13660. /questiondown/exclamdown/logicalnot/.notdef/florin/.notdef/.notdef
  13661. /guillemotleft/guillemotright/ellipsis/.notdef/Agrave/Atilde/Otilde/OE/oe
  13662. /endash/emdash/quotedblleft/quotedblright/quoteleft/quoteright/divide
  13663. /.notdef/ydieresis/Ydieresis/fraction/currency/guilsinglleft/guilsinglright
  13664. /fi/fl/daggerdbl/periodcentered/quotesinglbase/quotedblbase/perthousand
  13665. /Acircumflex/Ecircumflex/Aacute/Edieresis/Egrave/Iacute/Icircumflex
  13666. /Idieresis/Igrave/Oacute/Ocircumflex/.notdef/Ograve/Uacute/Ucircumflex
  13667. /Ugrave/dotlessi/circumflex/tilde/macron/breve/dotaccent/ring/cedilla
  13668. /hungarumlaut/ogonek/caron
  13669. TE
  13670. %AI3_BeginEncoding: _Helvetica Helvetica
  13671. [/_Helvetica/Helvetica 0 0 1 TZ
  13672. %AI3_EndEncoding TrueType
  13673. %AI3_BeginEncoding: _Helvetica-Bold Helvetica-Bold
  13674. [/_Helvetica-Bold/Helvetica-Bold 0 0 1 TZ
  13675. %AI3_EndEncoding TrueType
  13676. %%EndSetup
  13677. 0 A
  13678. u
  13679. u
  13680. u
  13681. 0 O
  13682. 0 g
  13683. 0 i 0 J 0 j 1 w 4 M []0 d
  13684. %AI3_Note:
  13685. 0 D
  13686. 53.25 58.25 m
  13687. 53.25 116.75 L
  13688. -41.75 116.75 L
  13689. -41.75 58.25 L
  13690. 53.25 58.25 L
  13691. f
  13692. U
  13693. U
  13694. U
  13695. u
  13696. u
  13697. u
  13698. 53.25 -24.25 m
  13699. 53.25 34.25 L
  13700. -41.75 34.25 L
  13701. -41.75 -24.25 L
  13702. 53.25 -24.25 L
  13703. f
  13704. U
  13705. U
  13706. U
  13707. u
  13708. u
  13709. u
  13710. 53.25 -111.75 m
  13711. 53.25 -53.25 L
  13712. -41.75 -53.25 L
  13713. -41.75 -111.75 L
  13714. 53.25 -111.75 L
  13715. f
  13716. U
  13717. U
  13718. U
  13719. u
  13720. u
  13721. u
  13722. 0 0.1 0 0 k
  13723. 1 R
  13724. 0 G
  13725. 0.75 w
  13726. 51 60.5 m
  13727. 51 119 L
  13728. -44 119 L
  13729. -44 60.5 L
  13730. 51 60.5 L
  13731. b
  13732. U
  13733. U
  13734. U
  13735. u
  13736. 0 To
  13737. 1 0 0 1 -44.9814 140.9482 0 Tp
  13738. TP
  13739. 0 Tr
  13740. 0 g
  13741. 1 w
  13742. /_Helvetica 8 Tf
  13743. 0 Ts
  13744. 100 Tz
  13745. 0 Tt
  13746. 0 TA
  13747. 0 0 5 TC
  13748. 100 100 200 TW
  13749. 0 0 0 Ti
  13750. 0 Ta
  13751. 0 Tq
  13752. 9 0 Tl
  13753. 0 Tc
  13754. 0 Tw
  13755. (Component) Tx
  13756. (\r) TX 
  13757. T*
  13758. (registration list) Tx
  13759. (\r) TX 
  13760. T*
  13761. (\r) TX 
  13762. TO
  13763. U
  13764. u
  13765. u
  13766. -147.25 0.75 m
  13767. -147.25 90.75 L
  13768. -209.25 90.75 L
  13769. -209.25 0.75 L
  13770. -147.25 0.75 L
  13771. f
  13772. U
  13773. u
  13774. 0 0.1 0 0 k
  13775. 1 R
  13776. 0 G
  13777. 0.75 w
  13778. -149.5 3 m
  13779. -149.5 93 L
  13780. -211.5 93 L
  13781. -211.5 3 L
  13782. -149.5 3 L
  13783. b
  13784. U
  13785. u
  13786. 1 g
  13787. 1 w
  13788. -166.5779 45.8595 m
  13789. -166.5389 42.8597 -166.5779 27.5218 y
  13790. -166.2591 25.0656 -169.4841 25.0656 v
  13791. -172.7092 25.0656 -176.4405 25.0656 y
  13792. -175.381 24.0062 l
  13793. -173.8904 22.8718 -176.7405 23.0218 v
  13794. -184.8405 23.0218 l
  13795. -186.1156 23.1718 -185.1405 24.0718 v
  13796. -184.2405 25.0468 l
  13797. -190.7656 25.0468 l
  13798. -193.6156 24.8968 -193.6156 27.4468 v
  13799. -193.6156 29.9968 -193.6156 45.822 y
  13800. -194.3656 48.297 -190.8406 48.297 v
  13801. -186.7156 48.297 -185.6656 48.297 y
  13802. -186.1905 47.397 l
  13803. -187.3156 45.822 -184.9905 45.897 v
  13804. -182.3668 45.9816 -175.3904 45.897 y
  13805. -173.5904 45.972 -174.4904 47.172 v
  13806. -175.3904 48.372 -175.3154 48.297 y
  13807. -169.4654 48.297 l
  13808. -166.6154 48.747 -166.5779 45.8595 v
  13809. b
  13810. 0 g
  13811. -186.5374 41.8845 m
  13812. -188.4874 37.9844 l
  13813. -188.4874 33.7844 l
  13814. -186.3874 29.4343 l
  13815. -182.5624 27.1843 l
  13816. -178.8873 26.8843 l
  13817. -175.8873 28.6843 l
  13818. -174.5373 27.3343 l
  13819. -171.0873 27.3343 l
  13820. -170.7873 29.8843 l
  13821. -172.7373 31.9844 l
  13822. -171.6873 34.3844 l
  13823. -171.9123 37.6094 l
  13824. -173.7°¿873 40.5345 l
  13825. -176.3373 42.7845 l
  13826. -179.1873 43.9845 l
  13827. -182.9374 43.9845 l
  13828. -186.5374 41.8845 l
  13829. f
  13830. 1 g
  13831. -181.7374 40.6845 m
  13832. -184.7374 38.7344 l
  13833. -185.2624 35.2844 l
  13834. -183.9874 31.9844 l
  13835. -180.3874 29.9594 l
  13836. -176.6373 31.6844 l
  13837. -174.9123 35.1344 l
  13838. -175.8123 38.8094 l
  13839. -178.4373 40.3844 l
  13840. -181.7374 40.6845 l
  13841. f
  13842. 0 g
  13843. -182.0374 35.5844 m
  13844. -181.8874 33.0344 -179.0373 34.5344 v
  13845. -173.9373 39.9345 l
  13846. -173.4123 43.6845 -175.9623 42.2595 v
  13847. -176.0373 41.2845 -174.9873 40.3844 v
  13848. -176.0373 39.1844 l
  13849. -177.3873 40.2345 l
  13850. -180.3874 37.0844 l
  13851. -178.8873 36.1844 -179.9373 35.2844 v
  13852. -180.0874 34.4594 -182.0374 35.5844 v
  13853. f
  13854. 1 g
  13855. -176.1873 42.4845 m
  13856. -176.7123 40.6095 -177.3873 40.2345 v
  13857. -176.0373 39.1844 l
  13858. -174.9873 40.3844 l
  13859. -176.1873 41.2095 -175.9623 42.2595 v
  13860. -175.7373 43.3095 -176.1873 42.4845 y
  13861. f
  13862. U
  13863. u
  13864. 0 To
  13865. 1 0 0 1 -180.2314 70.9482 0 Tp
  13866. TP
  13867. -20.6719 0 Td
  13868. 0 Tr
  13869. 1 O
  13870. 0 g
  13871. 1 Ta
  13872. (Component) Tx
  13873. (\r) TX 
  13874. 4.8916 -9 Td
  13875. (Manager) Tx 
  13876. (\r) TX 
  13877. TO
  13878. U
  13879. U
  13880. u
  13881. 0 O
  13882. -305.25 0.75 m
  13883. -305.25 90.75 L
  13884. -367.25 90.75 L
  13885. -367.25 0.75 L
  13886. -305.25 0.75 L
  13887. f
  13888. 0 0.1 0 0 k
  13889. 1 R
  13890. 0 G
  13891. 0.75 w
  13892. -307.5 3 m
  13893. -307.5 93 L
  13894. -369.5 93 L
  13895. -369.5 3 L
  13896. -307.5 3 L
  13897. b
  13898. 0 To
  13899. 1 0 0 1 -338.7314 70.9482 0 Tp
  13900. TP
  13901. -19.5605 0 Td
  13902. 0 Tr
  13903. 1 O
  13904. 0 g
  13905. 1 w
  13906. 8 0 Tl
  13907. (Application) Tx 
  13908. (\r) TX 
  13909. TO
  13910. 0 O
  13911. 1 g
  13912. 1 R
  13913. 0 G
  13914. 2 j
  13915. -338.8125 51.7812 m
  13916. -323.3125 36.2812 l
  13917. -338.5 21.0937 l
  13918. -354.5625 37.1562 l
  13919. -338.8125 51.7812 l
  13920. b
  13921. -339.1875 35.0312 m
  13922. -337.625 36.7187 l
  13923. -336.625 37.9687 -335.5 37.8437 v
  13924. -334.375 37.7187 -331.6875 37.7812 y
  13925. -326.5 32.6562 l
  13926. -326.0625 26.5312 l
  13927. -329.125 28.3437 l
  13928. -333.3125 28.4062 l
  13929. -335.4132 28.6753 -336.375 29.1562 v
  13930. -337.625 29.7812 -339.1875 31.2187 y
  13931. -339.7634 32.1745 -340 33.5937 v
  13932. -340.0625 33.9687 -338.9375 34.0312 -338.375 33.4687 c
  13933. -338.0563 33.15 -336.8125 31.4687 y
  13934. -335.25 31.5312 l
  13935. -333.8125 32.7812 l
  13936. -334.3125 33.9062 l
  13937. -335.6875 36.0312 -336.9375 34.6562 v
  13938. -337.8776 33.6221 -339.4375 34.2812 -339.1875 35.0312 c
  13939. b
  13940. 1 O
  13941. 0 g
  13942. 0 j
  13943. -326.5 33.3437 m
  13944. -323.5625 33.0312 l
  13945. -323.5625 25.2812 l
  13946. -325.8125 25.2812 l
  13947. -328.1875 27.7812 l
  13948. -325.625 25.4062 -326.5 33.3437 v
  13949. f
  13950. -330.0625 33.4062 m
  13951. -330.0625 32.3437 l
  13952. -337.3125 32.3437 l
  13953. -338.375 33.4687 l
  13954. -330.0625 33.4062 l
  13955. f
  13956. -340 33.5937 m
  13957. -342.9375 33.5937 l
  13958. -343.375 32.4062 -342.5 32.4062 v
  13959. -341.625 32.4062 -339.75 32.4062 y
  13960. -340 33.5937 l
  13961. f
  13962. 0 O
  13963. 1 g
  13964. 0 R
  13965. 0 G
  13966. 0.5 w
  13967. -338.5 48 m
  13968. B
  13969. U
  13970. 0 To
  13971. 1 0 0 1 -301.5 141.0107 0 Tp
  13972. TP
  13973. 0 Tr
  13974. 0 g
  13975. 1 w
  13976. 0 Ta
  13977. 9 0 Tl
  13978. (Application passes) Tx
  13979. (\r) TX 
  13980. T*
  13981. (description of component) Tx
  13982. (\r) TX 
  13983. T*
  13984. (it wants to access to ) Tx
  13985. (\r) TX 
  13986. T*
  13987. (Component Manager.) Tx 
  13988. (\r) TX 
  13989. TO
  13990. 0 To
  13991. 1 0 0 1 -173.0771 140.9482 0 Tp
  13992. TP
  13993. 0 Tr
  13994. (Component Manager tries) Tx
  13995. (\r) TX 
  13996. T*
  13997. (to match a component in) Tx
  13998. (\r) TX 
  13999. T*
  14000. (its registration list with the ) Tx
  14001. (\r) TX 
  14002. T*
  14003. (requested description.) Tx 
  14004. (\r) TX 
  14005. TO
  14006. u
  14007. u
  14008. 0 R
  14009. 0 G
  14010. 0.75 w
  14011. -301.0389 19.5076 m
  14012. -220.7359 19.5076 l
  14013. S
  14014. U
  14015. 0 O
  14016. 0 g
  14017. 1 w
  14018. -222.3875 22.1031 m
  14019. -216.6124 19.5219 l
  14020. -222.3875 16.8969 l
  14021. -220.6375 19.4781 l
  14022. -222.3875 22.1031 l
  14023. f
  14024. U
  14025. 0 To
  14026. 1 0 0 1 -178.5664 -48.0518 0 Tp
  14027. TP
  14028. 0 Tr
  14029. (Component Manager) Tx
  14030. (\r) TX 
  14031. T*
  14032. (returns ID of component) Tx
  14033. (\r) TX 
  14034. T*
  14035. (to application.) Tx 
  14036. (\r) TX 
  14037. TO
  14038. 0 R
  14039. 0 G
  14040. 61.5 -122 m
  14041. 61.5 161 L
  14042. -54 161 L
  14043. -54 -122 L
  14044. 61.5 -122 L
  14045. s
  14046. u
  14047. 0 O
  14048. 0 0.1 0 0 k
  14049. -296.2148 151.4745 m
  14050. -293.7155 151.4745 -291.6893 153.5007 -291.6893 156 c
  14051. -291.6893 158.4993 -293.7155 160.5255 -296.2148 160.5255 c
  14052. -298.7142 160.5255 -300.7403 158.4993 -300.7403 156 c
  14053. -300.7403 153.5007 -298.7142 151.4745 -296.2148 151.4745 c
  14054. f
  14055. 0 To
  14056. 0.8 0 0 0.8 -296.1 153.6086 0 Tp
  14057. TP
  14058. -2.2236 0 Td
  14059. 0 Tr
  14060. 1 O
  14061. 0 g
  14062. /_Helvetica-Bold 8 Tf
  14063. 1 Ta
  14064. 10 0 Tl
  14065. (1) Tx 
  14066. (\r) TX 
  14067. TO
  14068. U
  14069. u
  14070. 0 O
  14071. 0 0.1 0 0 k
  14072. -168.8398 151.9745 m
  14073. -166.3405 151.9745 -164.3143 154.0007 -164.3143 156.5 c
  14074. -164.3143 158.9993 -166.3405 161.0255 -168.8398 161.0255 c
  14075. -171.3392 161.0255 -173.3653 158.9993 -173.3653 156.5 c
  14076. -173.3653 154.0007 -171.3392 151.9745 -168.8398 151.9745 c
  14077. f
  14078. 0 To
  14079. 0.8 0 0 0.8 -168.825 154.1086 0 Tp
  14080. TP
  14081. -2.2236 0 Td
  14082. 0 Tr
  14083. 1 O
  14084. 0 g
  14085. (2) Tx 
  14086. (\r) TX 
  14087. TO
  14088. U
  14089. u
  14090. u
  14091. 0 O
  14092. 0 0.1 0 0 k
  14093. -174.7148 -36.5255 m
  14094. -172.2155 -36.5255 -170.1893 -34.4993 -170.1893 -32 c
  14095. -170.1893 -29.5007 -172.2155 -27.4745 -174.7148 -27.4745 c
  14096. -177.2142 -27.4745 -179.2403 -29.5007 -179.2403 -32 c
  14097. -179.2403 -34.4993 -177.2142 -36.5255 -174.7148 -36.5255 c
  14098. f
  14099. 0 To
  14100. 0.8 0 0 0.8 -174.6375 -34.3914 0 Tp
  14101. TP
  14102. -2.2236 0 Td
  14103. 0 Tr
  14104. 1 O
  14105. 0 g
  14106. (3) Tx 
  14107. (\r) TX 
  14108. TO
  14109. U
  14110. U
  14111. u
  14112. u
  14113. 0 R
  14114. 0 G
  14115. 0.75 w
  14116. -143.2133 19.5076 m
  14117. -61.9102 19.5076 l
  14118. S
  14119. U
  14120. 0 O
  14121. 0 g
  14122. 1 w
  14123. -63.5619 22.1031 m
  14124. -57.7868 19.5219 l
  14125. -63.5619 16.8969 l
  14126. -61.8119 19.4781 l
  14127. -63.5619 22.1031 l
  14128. f
  14129. U
  14130. u
  14131. u
  14132. 0 R
  14133. 0 G
  14134. 0.75 w
  14135. -58.5367 11.4924 m
  14136. -139.3397 11.4924 l
  14137. S
  14138. U
  14139. 0 O
  14140. 0 g
  14141. 1 w
  14142. -137.6881 8.8969 m
  14143. -143.4632 11.4781 l
  14144. -137.6881 14.1031 l
  14145. -139.4381 11.5219 l
  14146. -137.6881 8.8969 l
  14147. f
  14148. U
  14149. u
  14150. u
  14151. 0 R
  14152. 0 G
  14153. 0.75 w
  14154. -216.2867 11.4924 m
  14155. -296.5897 11.4924 l
  14156. S
  14157. U
  14158. 0 O
  14159. 0 g
  14160. 1 w
  14161. -294.9381 8.8969 m
  14162. -300.7132 11.4781 l
  14163. -294.9381 14.1031 l
  14164. -296.6881 11.5219 l
  14165. -294.9381 8.8969 l
  14166. f
  14167. U
  14168. 0 R
  14169. 0 0.5 0 0 K
  14170. 0.4 w
  14171. -264.5 109.5 m
  14172. -264.5 54 l
  14173. S
  14174. -248 -2.25 m
  14175. -184 -30.25 l
  14176. S
  14177. -111.5 -2.5125 m
  14178. -165.5 -30.2 l
  14179. S
  14180. u
  14181. u
  14182. u
  14183. 0 O
  14184. 0 0.1 0 0 k
  14185. 1 R
  14186. 0 G
  14187. 0.75 w
  14188. 51 -22 m
  14189. 51 36.5 L
  14190. -44 36.5 L
  14191. -44 -22 L
  14192. 51 -22 L
  14193. b
  14194. U
  14195. U
  14196. U
  14197. u
  14198. u
  14199. u
  14200. 51 -109.5 m
  14201. 51 -51 L
  14202. -44 -51 L
  14203. -44 -109.5 L
  14204. 51 -109.5 L
  14205. b
  14206. U
  14207. U
  14208. U
  14209. u
  14210. 0 To
  14211. 1 0 0 1 -34.4814 101.4482 0 Tp
  14212. TP
  14213. 0 Tr
  14214. 1 O
  14215. 0 g
  14216. 1 w
  14217. /_Helvetica 8 Tf
  14218. 0 Ta
  14219. 9 0 Tl
  14220. (ID = ) Tx 
  14221. 0 O
  14222. 14 0 Tl
  14223. (10000) Tx 
  14224. 1 O
  14225. 9 0 Tl
  14226. (\r) TX 
  14227. T*
  14228. (Type = 'math') Tx
  14229. (\r) TX 
  14230. T*
  14231. (Subtype =) Tx 
  14232. 0 O
  14233. ( '       ') Tx 
  14234. 1 O
  14235. (\r) TX 
  14236. T*
  14237. (Manufacturer = 'appl') Tx
  14238. (\r) TX 
  14239. T*
  14240. (\r) TX 
  14241. TO
  14242. U
  14243. 0 To
  14244. 1 0 0 1 -140.9521 42.4482 0 Tp
  14245. TP
  14246. 0 Tr
  14247. 0 O
  14248. (Type = 'math') Tx
  14249. (\r) TX 
  14250. T*
  14251. (Subtype = '       ') Tx
  14252. (\r) TX 
  14253. T*
  14254. (Manufacturer = 'appl' ) Tx
  14255. (\r) TX 
  14256. T*
  14257. (\r) TX 
  14258. 0 -14 Td
  14259. 14 0 Tl
  14260. (           10000) Tx 
  14261. (\r) TX 
  14262. TO
  14263. u
  14264. 0 To
  14265. 1 0 0 1 -34.4814 18.9482 0 Tp
  14266. TP
  14267. 0 Tr
  14268. 1 O
  14269. 9 0 Tl
  14270. (ID = 10001) Tx
  14271. (\r) TX 
  14272. T*
  14273. (Type = 'math') Tx
  14274. (\r) TX 
  14275. T*
  14276. (Subtype =) Tx 
  14277. 0 O
  14278. ( '       ') Tx 
  14279. 1 O
  14280. (\r) TX 
  14281. T*
  14282. (Manufacturer = 'gwck') Tx
  14283. (\r) TX 
  14284. T*
  14285. (\r) TX 
  14286. TO
  14287. U
  14288. u
  14289. 0 To
  14290. 1 0 0 1 -34.4814 -68.5518 0 Tp
  14291. TP
  14292. 0 Tr
  14293. (ID = nnn) Tx 
  14294. 13 0 Tl
  14295. (n) Tx 
  14296. 9 0 Tl
  14297. (n) Tx
  14298. (\r) TX 
  14299. T*
  14300. (Type = 'blah') Tx
  14301. (\r) TX 
  14302. T*
  14303. (Subtype = 'foo ') Tx
  14304. (\r) TX 
  14305. T*
  14306. (Manufacturer = 'appl') Tx 
  14307. (\r) TX 
  14308. TO
  14309. U
  14310. 0 To
  14311. 1 0 0 1 4 -32.25 0 Tp
  14312. TP
  14313. -1.3994 0 Td
  14314. 0 Tr
  14315. 1 Ta
  14316. 7 0 Tl
  14317. (\245) Tx 
  14318. 8 0 Tl
  14319. (\r) TX 
  14320. T*
  14321. (\245) Tx
  14322. (\r) TX 
  14323. T*
  14324. (\245) Tx 
  14325. (\r) TX 
  14326. TO
  14327. 0 To
  14328. 1 0 0 1 -299.4521 42.4482 0 Tp
  14329. TP
  14330. 0 Tr
  14331. 0 O
  14332. 0 Ta
  14333. 9 0 Tl
  14334. (Type = 'math') Tx
  14335. (\r) TX 
  14336. T*
  14337. (Subtype = '       ') Tx
  14338. (\r) TX 
  14339. T*
  14340. (Manufacturer = 'appl') Tx
  14341. (\r) TX 
  14342. T*
  14343. (\r) TX 
  14344. 0 -14 Td
  14345. 14 0 Tl
  14346. (           10000) Tx 
  14347. (\r) TX 
  14348. TO
  14349. 1 R
  14350. 0 0.5 0 0 K
  14351. 0.4 w
  14352. -92.125 116.25 m
  14353. -46.625 106.75 l
  14354. S
  14355. %%PageTrailer
  14356. gsave annotatepage grestore showpage
  14357. %%Trailer
  14358. Adobe_IllustratorA_AI3 /terminate get exec
  14359. Adobe_typography_AI3 /terminate get exec
  14360. Adobe_customcolor /terminate get exec
  14361. Adobe_cshow /terminate get exec
  14362. Adobe_cmykcolor /terminate get exec
  14363. Adobe_packedarray /terminate get exec
  14364. %%EOF
  14365. *◊#ˇ ˇˇˇˇ#◊ 
  14366. d,     Helvetica
  14367.     .°dONLNd)ñ4n+¥P"MAKING CALLS TO THE MATH COMPONENT, Palatino
  14368. °dONLNd#4ñ@˛* LThe Math component performs only two functions, dividing and multiplying two°dONLNdp@ñL* Uintegers. To ask it to divide two numbers for us, we just call the component function°dONLNdΔLñX‚* EDoDivide with the component instance value we got by opening the Math°dONLNd Xñd»*
  14369. component.,
  14370. Courier
  14371.     °dONLNdqñ|Í*Dresult = DoDivide (mathInstance, numerator, denominator, "ient);
  14372. °dONLNd]àñî◊*DWhen we’re done with the component, we close the connection with the°dONLNd¢îñ†%* CloseComponent call, like this:
  14373.     °dONLNd√≠ñ∏Y*'result = CloseComponent (mathInstance);
  14374. °dONLNd΃ñ–*SThat’s all there is to it. You can see that making component function calls is much°dONLNd?–ñ‹4* #like making any other kind of call.
  14375. °dONLNdcÌñ˚é*EXTENDING EXISTING COMPONENTS
  14376. °dONLNdŎñ ˇ*PAfter defining the basic functionality for your component, you may find that you°dONLNd“ ñ˜* Mwant to extend it beyond what you originally specified in your component API.°dONLNd ñ#€* HThere are three ways to extend the functionality of existing components:°dONLNdi)©5Ø+•°dONLNdk)µ5«) ;Use the subtype and/or manufacturer fields of the component°dONLNdß5µAΔ* ?description to indicate to a client application that a specific°dONLNdÁAµMª* 6component implementation provides previously undefined°dONLNdMµYÙ* functionality.°dONLNd-_©kØ(á«•°dONLNd/_µk‘) ?Revise the component API to add calls that weren’t specified in°dONLNdokµw* the original interface.°dONLNdá}©â±(•«• °dONLNdä}∂â÷)
  14377. <Modify the behavior of a particular component implementation°dONLNd«âµïí(±”3by capturing it and overriding a specific function.°dONLNd˚°ñ≠î(…¥7The following sections examine these methods in detail.
  14378.     °dONLNd3æñ…¿*0ADDING NEW FUNCTIONALITY TO A SPECIFIC COMPONENT°dONLNdd ñ’Ú* IMPLEMENTATION
  14379. °dONLNdt’ñ·
  14380. * MLet’s add some more functionality to the Math component. The MoMath component°dONLNd¬·ñÌÍ* Iextends the Math component by adding an addition function. A new function°dONLNd Ìñ˘ * Nprototype is added for the new function in MoMathComponent.h, along with a new°dONLNd[˘ñ* request code, kDoAddSelect.
  14381.     °dONLNdwñ*Ipascal ComponentResult DoAdd (MathComponent mathInstance, short firstNum,°dONLNd¬§)È+ Ashort secondNum, short* result) = ComponentCallNow (kDoAddSelect,°dONLNd*§5¬* 0x08); xBx/,Times
  14382. ({& 
  14383. +
  14384. 22
  14385. 4ìq·3
  14386. +md)e)v)e)l)o)p)  
  14387. )
  14388. December 1992ˇF◊#ˇ ˇˇˇˇ#◊ 
  14389. d, Palatino
  14390. .°dONLNd$0s+6LMRequest codes for implementation-specific functions must have an ID of 256 or°dONLNdN0<m* Ngreater. This is required to differentiate these functions from those that are°dONLNdù<Hx* Lgenerally defined in the API for the component type. Implementation-specific°dONLNdÍHTí* Sfunctions usually provide capabilities beyond those specified in the component API,°dONLNd>T`å* Pand thus offer developers a way to differentiate their component implementations°dONLNdè`lê* Ofrom those of competing developers. The following code fragment from the MoMath°dONLNdfllx** :component dispatcher shows support for the DoAdd function:,
  14391. Courier
  14392.     °dONLNdÖêr*case kDoAddSelect:°dONLNd0ÖöêÂ)Ç// Add function°dONLNd@ëú(∏6{°dONLNdCù&®È+ 'result = CallComponentFunction (params,°dONLNdq©`¥
  14393. +: "(ComponentFunction) _MoMathDoAdd);°dONLNdïµ&¿D(‹Dbreak;°dONLNdú¡Ã(Ë6}
  14394. °dONLNdûÿ‰Ñ*NHow does the calling application know that a superset of the Math component is°dONLNd̉q* Naround? To start with, the caller needs to know that such a beast even exists.°dONLNd<¸w* LRemember, this is an extension of a component implementation by a particular°dONLNdâ¸ë* Uvendor, not of the component type in general. In this case, the extended component is°dONLNdflä* Pdifferentiated from its basic implementation by its manufacturer code. Both Math°dONLNd0 é* Nand MoMath have the same component type ('math'), but their manufacturer codes°dONLNd ,è* Rdiffer ('appl' for Math and 'gwck' for MoMath). Note that the subtype field can be°dONLNd“,8h* Lused in a similar manner, but it’s typically used to distinguish algorithmic°dONLNd8Dç* Pvariations of a general component type. For example, image compressor components°dONLNdpDPf* L('imco') use the subtype field to differentiate various types of compression°dONLNdΩP\Z* Lalgorithms ('rle ' for run length encoding, 'jpeg' for JPEG, and so on). The°dONLNd
  14395. \hj* Kmanufacturer field is used to identify vendor-specific implementations of a°dONLNdVht≥* !particular compression algorithm.°dONLNdxÄåw*OIf the application is aware that this extended component exists, it can use the°dONLNd»åòé* Uinformation stored in the component’s 'thng' resource to locate and open it. Once the°dONLNdò§Å* Qcomponent has been opened, the application calls the extended function just as it°dONLNdp§∞º* #would any other component function.,     Helvetica
  14396.     °dONLNdï¡Ã,*,ADDING NEW FUNCTIONALITY TO A COMPONENT TYPE
  14397. °dONLNd¬Ãÿ[* FIn the preceding example, we used the manufacturer code to hook in new°dONLNd    ÿ‰Å* Nfunctionality to the Math component; this allowed a specific implementation to°dONLNdX‰ä* Sextend the interface. In reality, we would be better off extending the component by°dONLNd¨¸á* Pdefining a change to the Math component API, so that all components of this type°dONLNd˝¸ç* Twould have an interface defined for the new addition function. Of course, this is an°dONLNd    Rè* Ooption only when you’re the owner of the component API. Changing component APIs°dONLNd    ¢ \* Hthat are owned by others (for instance, by Apple) is a good way to break°dONLNd    Î ,<* Capplications, and no one appreciates that, least of all your users.°dONLNd
  14398. /8Dã*WIf you’re going to take this route, be sure that the existing API is left unchanged, so°dONLNd
  14399. áDPx* Mthat clients using the old component’s API can use your new component without x4x&,Times
  14400. ({) 
  14401. +
  14402. 23
  14403. 4ìÚ·Ø
  14404. (Ú*1TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  14405. )”
  14406. December 1992ˇ\◊#ˇ ˇˇˇˇ#◊ 
  14407. d, Palatino
  14408. .°dONLNdñ$+¥@Shaving to be modified. In addition, it’s important to update the interface revision°dONLNdT$ñ0¯* Mlevel of components that implement the new API, so that clients can determine°dONLNd¢0ñ<ÿ* Cwhether a particular component implementation supports the new API.,     Helvetica
  14409.     °dONLNdÊMñX[* MODIFYING EXISTING FUNCTIONALITY
  14410. °dONLNdXñd„* IModifying existing functionality is a little more complicated than adding°dONLNdQdñpÏ* Ifunctionality to a component type. In the example component, the DoDivide°dONLNdõpñ|
  14411. * Tfunction divides two 16-bit integers, truncating the result. We would actually get a°dONLNd|ñà* Ubetter answer if the result were rounded to the nearest integer. We don’t need to add°dONLNdFàñîΔ* Ea new call to do this, since what we really want to do is replace the°dONLNdåîñ†˘* Nimplementation of the existing call with a more accurate version. On the other°dONLNd€†ñ¨* Rhand, the Math component does an acceptable job of multiplying two integers, so we°dONLNd.¨ñ∏
  14412. * Udon’t need to override that function. Instead, we’ll use the multiply function that’s°dONLNdÑ∏ñƒ¸* already implemented.°dONLNdö–ñ‹≥*>We can do this by writing a component that does the following:°dONLNdŸ‚©ÓØ+•°dONLNd€‚µÓa) $captures the original Math component°dONLNdÙ©±(«• °dONLNdÙ∂—)
  14413. =overrides the original DoDivide function with a more accurate°dONLNdBµ ((”division function°dONLNdT©±(:«• °dONLNdW∂≥)
  14414. 6delegates the DoMultiply function to the original Math°dONLNdéµ*‰(F”    component°dONLNdô6ñB›(^¥ILet’s start by writing a new component — in the example code, it’s called°dONLNd„BñN* LNuMathComponent — that contains a dispatcher, as well as functions to handle°dONLNd0NñZ¯* Jthe Component Manager request codes and the new DoDivide routine. We use a°dONLNd{Zñf
  14415. * Rregister routine to check for the availability of a Math component before we allow°dONLNdŒfñrÎ* Ithe NuMath component to be registered. If no Math component is available,°dONLNdrñ~«* Eobviously we can’t capture it, and we shouldn’t register. We also set°dONLNd^~ñä“* CcmpWantsRegisterMessage (bit 31) in the componentFlags field of the°dONLNd¢äññ    * PComponentDescription record in the NuMath component’s 'thng' resource to let the°dONLNdÛññ¢* LComponent Manager know that we want a chance to check our environment before°dONLNd@¢ñÆ * Swe’re registered. With this flag set, the sequence of requests that NuMath will get°dONLNdîÆñ∫Å* 7at registration time will be open, register, and close.°dONLNdÕΔñ“á*4The NuMath component register routine is as follows:,
  14416. Courier
  14417.     °dONLNdflñÍw*-pascal ComponentResult _NuMathRegister (void)°dONLNd0Îñˆõ* {°dONLNd3˜§‰+ @// See if a Math component is registered. If not, don't register°dONLNdu§Ó* B// this component, since it can't work without the Math component.°dONLNdπ§ä* .// We return 0 to register, 1 to not register.°dONLNdÍ'§2*ComponentDescription°dONLNdˇ'2E)t    mathDesc; xBx/,Times
  14418. ({& 
  14419. +
  14420. 24
  14421. 4ìq·3
  14422. +md)e)v)e)l)o)p)  
  14423. )
  14424. December 1992ˇ$◊#ˇ ˇˇˇˇ#◊ 
  14425. d,
  14426. Courier
  14427.     .°dONLNd&$˝+D@+mathDesc.componentType = mathComponentType;°dONLNd-%&0¡* mathDesc.componentSubType = 0L;°dONLNdP%Ò0-)À // Wild card°dONLNd^1&<Ó(XD(mathDesc.componentManufacturer = 'appl';°dONLNdà=&H∑* mathDesc.componentFlags = 0L;°dONLNd©=ÒH-)À // Wild card°dONLNd∑I&TÀ(pD!mathDesc.componentFlagsMask = 0L;°dONLNd€IÒT-)À // Wild card°dONLNdÎa&l\(àD>return ((FindNextComponent (nil, &mathDesc) != 0L) ? 0L : 1L);°dONLNd*mx(î6}, Palatino
  14428. °dONLNd,Ñêà*POur open routine opens an instance of the Math component normally, and then uses°dONLNd}êúà* Kthe ComponentFunctionImplemented routine to determine whether the component°dONLNd…ú®{* Mwe want to capture supports the target request code. We then capture the Math°dONLNd®¥‚* )component with the CaptureComponent call.
  14429.     °dONLNdB¡Ãv*Fif (ComponentFunctionImplemented ((ComponentInstance) mathComponentID,°dONLNdãÕ5ÿ∑+ kComponentTargetSelect)) {°dONLNd®Ÿ&‰â(DGmathComponentID = CaptureComponent (mathComponentID, (Component) self);°dONLNdÂ( 6}
  14430. °dONLNdÚ¸Ö*LThe original Math component ID is now effectively removed from the Component°dONLNd?Ä* MManager’s registration list. This means that the Math component is now hidden°dONLNdç ä* Tfrom all other clients, except those that already had a connection open to it before°dONLNd‚ ,a* it was captured.°dONLNdÛ8Dç*NWe then open an instance of the Math component, and use the ComponentSetTarget°dONLNdBDPÉ* Nutility (defined in MathComponent.h) to inform Math that it’s been captured by°dONLNdëP\C* NuMath.
  14431.     °dONLNdöit
  14432. *1result = ComponentSetTarget (mathInstance, self);
  14433. °dONLNdÃÄåd*HWhy does a component need to know that it’s been captured? If a captured°dONLNdåòz* Pcomponent makes use of its own functions, it needs to call through the capturing°dONLNdfò§q* Kcomponent instead of through itself, because the capturing component may be°dONLNd≤§∞l* Loverriding one of the calls that the captured component is using. A captured°dONLNdˇ∞º]* Gcomponent does this by keeping track of the component instance that the°dONLNdGº»Å* PComponentSetTarget call passed to it and by using that instance to make calls to°dONLNdò»‘â* the capturing component.°dONLNd±‡Ïâ*MWhen the NuMath Comp;onent receives a divide request code, we dispatch to the°dONLNdˇÏ¯}* Lnew DoDivide function, effectively overriding the DoDivide function that was°dONLNdL¯í* Nimplemented in the Math component. However, when we receive a multiply request°dONLNdõä* Qcode, we delegate this to the captured Math component, since we aren’t overriding°dONLNdÌë* Pthe multiply function. We do this by simply making a DoMultiply call to the Math°dONLNd>(Ö* Kcomponent, passing in the parameters that the NuMath component was provided°dONLNdä(42* with. x4x&,Times
  14434. ({) ,     Helvetica
  14435. +
  14436. 25
  14437. (è6In our sample code, )JComponentSetTarget is defined(ô6,in MathComponent.h because the QuickTime 1.0*
  14438. 2Component.h interface file doesn’t declare it. The*
  14439. 3ComponentSetTarget declaration is included in newer*
  14440. 7QuickTime interface files, so if you’re using them, you*
  14441. +should comment it out in MathComponent.h. •
  14442. 4ìÚ·Ø
  14443. +Ù11TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  14444. )”
  14445. December 1992ˇL◊#ˇ ˇˇˇˇ#◊ 
  14446. d,
  14447. Courier
  14448.     .°dONLNd%ñ0©+¥L7result = DoMultiply (mathInstance, firstNum, secondNum,°dONLNd81ñ<õ*  °dONLNdA1
  14449. <x)tmultiplicationResult);, Palatino
  14450. °dONLNdXHñT
  14451. (p¥RIn the close routine of the NuMath component, we remember to close the instance of°dONLNd´Tñ`* Qthe Math component we were using, and also to uncapture it so that we restore the°dONLNd˝`ñl* system to its original state.
  14452.     °dONLNdyñÑY*'result = CloseComponent (mathInstance);°dONLNdDÖñê|* .result = UncaptureComponent (mathComponentID);,     Helvetica°dONLNds°ñ¨5*THAT WASN’T SO BAD, WAS IT?
  14453. °dONLNdè¨ñ∏* PAs you can see, adding new functionality is no big deal. As always, however, you°dONLNd‡∏ñƒÈ* Hshould notify developers who may use your component of any late-breaking°dONLNd)ƒñ–
  14454. * Tinterface changes. You want to be sure that everyone’s writing code that conforms to°dONLNd~–ñ‹O* )your most recent component specification.
  14455. °dONLNd©Ìñ˚X*ELEVEN COMMON MISTAKES
  14456. °dONLNd¿ˇñ *NYou may encounter some pitfalls during the development of your component. Here°dONLNd ñˆ* Kwe discuss 11 common mistakes that we’ve either made personally or observed°dONLNd[ñ#
  14457. * Pother developers make. We hope that you’ll learn from our own fumblings and save°dONLNd¨#ñ/* yourself time and frustration.
  14458.     °dONLNdÀ<ñGR*'Allocating space at registration time. 
  14459. °dONLNdÚ;RG˘)º&Generally, it’s best if your component°dONLNdGñS˚(o¥Qallocates its storage only when it’s about to be asked to do something — that is,°dONLNdkSñ_¸* Jwhen it has received a kOpenComponentSelect request code. This way, memory°dONLNd∂_ñk°* :isn’t tied up unnecessarily. Remember, your component may °dONLNd_°k∫(áønever°dONLNdı_∫k ) be called during a°dONLNd    kñw˝(ì¥Rgiven session, and if it’s not, it shouldn’t hang out sucking up memory some other°dONLNd\wñÉ* process might be able to use.
  14460.     °dONLNdzêñõQ*%Allocating space in the system heap. 
  14461. °dONLNdüèQõ)ª'The system heap shouldn’t be your first°dONLNd«õñßÚ(√¥Mchoice as a place to put your component globals. The system heap is generally°dONLNdßñ≥ * Treserved for system-wide resources (big surprise), and most components fall into the°dONLNdj≥ñø˚* Qcategory of application resources that needn’t be resident at all times. Consider°dONLNdºøñÀ * Scarefully whether you need to scarf up system space. In addition, if your component°dONLNdÀñ◊* Sis registered in an application heap, you should never try to allocate space in the°dONLNdd◊ñ„Ù* Lsystem heap. The fact that you’re registered in an application heap probably°dONLNd±„ñÔÎ* Mindicates that there isn’t any more space in the system heap for you to grab.
  14462.     °dONLNdˇ¸ñ√*9Not supporting the kComponentVersionSelect request code. 
  14463. °dONLNd8˚√    (#·This is a pretty°dONLNdIñ(/¥7nasty omission for several reasons. First, this is the °dONLNdÄü)Èeasiest°dONLNdáü‚)  request code to°dONLNdòñ(;¥Qimplement; it takes only a single line of code! What are you, lazy? (Don’t answer°dONLNdÍñ+Ú* Nthat.) Second, clients may use the API version level to keep track of extended°dONLNd    9+ñ7·* Jfunctionality — it may be that version 2 of a component interface contains°dONLNd    Ñ7ñC* Radditional calls over version 1, and a client certainly has reason to want to know°dONLNd    ◊CñO&*  that. Third, clients may use the xBx/,Times
  14464. ({& 
  14465. +
  14466. 26
  14467. 4ìq·3
  14468. +md)e)v)e)l)o)p)  
  14469. )
  14470. December 1992ˇ⁄◊#ˇ ˇˇˇˇ#◊ 
  14471. d, Palatino
  14472. .°dONLNd*Ç+6FNcomponent version to determine, for example, whether the component in question°dONLNdO*6Ö* contains a recent bug fix.,     Helvetica
  14473.     °dONLNdjALx*FIncorrectly calculating the parameter size for your component function°dONLNd±MXO* prototype. 
  14474. °dONLNdºLOXë)7KIf you do this, you’ll probably notice it right after calling the offending°dONLNdXdá(Ä6Pcomponent function, since your stack will be messed up by however many bytes you°dONLNdYdp^* Jfailed to calculate correctly. A common instance of this error occurs when°dONLNd§p|b* Jcalculating the space required by a function call that has char or Boolean°dONLNdÔ|àë* Qparameters. Under certain circumstances, Boolean and char types are padded to two°dONLNdAàî◊* )bytes when passed as function parameters.°dONLNdlû™|*NTo illustrate, we’ll look at two example declarations. How many bytes of stack°dONLNdª™∂U* Gspace need to be reserved for the parameters of the following function?,
  14475. Courier
  14476.     °dONLNd√ŒD*<pascal ComponentResult I2CSendMessage (ComponentInstance ti,°dONLNdBœ&⁄k+ Aunsigned char slaveAddr, unsigned char *dataBuf, short byteCount)
  14477. °dONLNdÑÊÚ|(6MThe correct answer is eight bytes. The slaveAddr parameter is promoted to two°dONLNd“Ú˛ê* Sbytes, the dataBuf pointer takes four bytes, and the byteCount takes two bytes. The°dONLNd&˛
  14478.     * 6rest of the declaration then takes the following form:
  14479.     °dONLNd_& +1= ComponentCallNow (kI2CSendMessageSelect, 0x08);
  14480. °dONLNdë,8Å(T6PLet’s look at the next example. How many bytes of stack space does this function°dONLNd‚8D=* require?
  14481.     °dONLNdÎOZ0*8pascal ComponentResult MyFunction (ComponentInstance ti,°dONLNd$[f*  °dONLNd&[&f ).Boolean aBoolean, char aChar, short *aPointer)
  14482. °dONLNdUp|å(ò6QThe correct answer is six bytes. The aBoolean parameter takes one byte, the aChar°dONLNdß|à~* Mparameter takes one byte, and the aPointer parameter takes four bytes. What’s°dONLNdıàîu* Kthat? Didn’t we just say that Boolean and char parameters got padded to two°dONLNdAî†Å* Nbytes? We certainly did, but these types get padded only when an odd number of°dONLNdꆨ|* Nchar or Boolean parameters occurs consecutively in the declaration. Because we°dONLNdfl¨∏y* Pcould add one byte for the Boolean to the one byte for the char following it, we°dONLNd0∏ƒí* Sdidn’t need to do any padding — the total number of bytes was even (two bytes), and°dONLNdу–è* Rthat’s what’s important. In the first example, this didn’t work. We added one byte°dONLNd◊–‹ã* Wfor the char to the four bytes for the pointer following it, and got five bytes, and so°dONLNd/‹ËÇ* Pwe needed to pad the char parameter by one byte. The rest of the declaration for°dONLNdÄËÙz* the second example is
  14483.     °dONLNdòˇ&
  14484. +-= ComponentCallNow (kMyFunctionSelect, 0x06);°dONLNdΔ"{(>6GRegistering your component when its required hardware isn’t available. 
  14485. °dONLNd    
  14486. {"É(>ôIf°dONLNd    ".z(J6Myour component doesn’t depend on specific hardware functionality, don’t worry°dONLNd    ^.:1* about x4x&,Times
  14487. ({) 
  14488. +
  14489. 27
  14490. 4ìÚ·Ø
  14491. (Ú*1TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  14492. )”
  14493. December 1992ˇ˛◊#ˇ ˇˇˇˇ#◊ 
  14494. d, Palatino
  14495. .°dONLNdñ$+¥@Uthis. If it does (as, for example, video digitizers do), make sure you check for your°dONLNdV$ñ0* Mhardware before you register your component. The Component Manager provides a°dONLNd§0ñ<* Nflag, cmpWantsRegisterMessage, that you can set in the componentFlags field of°dONLNdÛ<ñHˆ* Kyour component description record to inform the Component Manager that your°dONLNd?HñTˇ* Qcomponent wants to be called before it’s registered. This gives your component an°dONLNdëTñ`
  14496. * Topportunity to check for its associated hardware, and to decline registration if the°dONLNdÊ`ñl
  14497. * hardware isn’t available.,     Helvetica
  14498.     °dONLNdyñÑ *HCreating multiple instances in response to OpenComponent calls when your°dONLNdIÖñêÇ* .component doesn’t support multiple instances. 
  14499. °dONLNdwÑÇê)ÏOnly you can know whether°dONLNdëêñú(∏¥Pyour component can be opened multiple times. For instance, the Math component is°dONLNd‚úñ®* Pcapable of being opened as many times as memory allows (although our sample code°dONLNd3®ñ¥„* Nrestricts the number of open instances to three for the sake of illustration).°dONLNdÇ¥ñ¿* ONormally, a component that controls a single hardware resource should be opened°dONLNd“¿ñÃ
  14500. * Uonly once and should fail on subsequent open requests. This will prevent clients from°dONLNd(Ãñÿ%* oversubscribing your component.
  14501.     °dONLNdHÂñˇ*ENot performing requisite housekeeping in response to a CloseComponent°dONLNdéÒñ¸Ø* call. 
  14502. °dONLNdîظ)IBad things will happen, especially if you have hierarchies of components!°dONLNdfi¸ñ($¥UAs part of your close routine, remember to dispose of your private global storage and°dONLNd4ñŸ* Kto close any drivers, components, files, and so on that you no longer need.
  14503.     °dONLNdÅ!ñ,„*DAllowing multiple instances from a single registration of a hardware°dONLNdΔ-ñ8Ô* Ecomponent instead of allowing a single instance from each of multiple°dONLNd 9ñD›* registrations. 
  14504. °dONLNd8›DÌ)G:While this isn’t really a common mistake today, we want to°dONLNdVDñP (l¥Qemphasize that there’s a big difference between designing your component to allow°dONLNd®Pñ\* Omultiple instances versus registering the component multiple times and allowing°dONLNd¯\ñhÓ* Neach registered component to open only once. In the case of a generic software°dONLNdGhñtˆ* Mlibrary element (like Math), there’s no problem with multiple instances being°dONLNdïtñÄ›* Iopened. In the case of a hardware resource that’s being controlled with a°dONLNdflÄñå* Qcomponent, it’s almost always preferable to register the component once for every°dONLNd1åñò‡* Kresource that’s available (four widget cards would result in four different°dONLNd}òñ§›* Jregistrations rather than one registration that can be opened four times).°dONLNd…∞ñºÓ*LWhy does it matter? Consider an application whose sole purpose in life is to°dONLNd    ºñ»˘* Lmanage components that control hardware resources. It may be selecting which°dONLNd    c»ñ‘* Uresource to use, which one to configure, or which one to pipe into another. It’s much°dONLNd    π‘ñ‡ * Rmore natural to ask the Component Manager to provide a list of all components of a°dONLNd
  14505. ‡ñÏΔ* Fcertain type than it is to open each component that fits the criteria °dONLNd
  14506. R‡ΔÏÀ(‰n°dONLNd
  14507. S‡ÀÏ ) times (until it°dONLNd
  14508. dÏñ¯ (¥Dreturns an open error) in order to determine how many are available.°dONLNd
  14509. ™ñ˘*NTo kill a dead horse, suppose we have three identical video digitizers, and we°dONLNd
  14510. ˘ñ¸* Rwant to convey that information to the user via a menu list. If all are registered°dONLNd Lñ(˜* Kseparately, we can easily determine how many video digitizers are available°dONLNd ò(ñ4˘* L(without even opening them) by using the FindNextComponent call. If only one°dONLNd Â4ñ@* were registered, the list xBx/,Times
  14511. ({& 
  14512. +
  14513. 28
  14514. 4ìq·3
  14515. +md)e)v)e)l)o)p)  
  14516. )
  14517. December 1992ˇ™◊#ˇ ˇˇˇˇ#◊ 
  14518. d, Palatino
  14519. .°dONLNd${+6@Qpresented to the user would only be a partial list. Take the blind leap of faith:°dONLNdR$0«* ®ister duplicate hardware resources!°dONLNdz<Hç*VAs a final note, if you’re registering a single component multiple times, be sure that°dONLNd—HTè* Tthe component name is unique for each registration. This allows users to distinguish°dONLNd&T`í* Pbetween available components (as in the menu example in the previous paragraph),°dONLNdw`lfi* ,and it also helps you avoid the next gotcha.,     Helvetica
  14520.     °dONLNd§yÑH*:Always counting on your component refCon being preserved. 
  14521. °dONLNdfixHÑá(†f We know this°dONLNdÎÑêe(¨6Kmay be upsetting to many of you, but there exists a situation in which your°dONLNd7êúq* Kcomponent refCon may not be valid. A component refCon (similar to a dialog,°dONLNdÉú®É* Swindow, or control refCon) is a 4-byte value that a component or client can use for°dONLNd◊®¥S* Eany purpose. It’s accessed through a pair of Component Manager calls,°dONLNd¥¿â* KGetComponentRefcon and SetComponentRefcon. Component refCons are frequently°dONLNdi¿Ãç* Sused to hold useful information such as device IDs or other shared global data, and°dONLNdΩÃÿ9* Dso can be quite critical to a component. We can hear you now . . . “°dONLNdÃ9ÿU(ÙWWhat°dONLNdÃUÿy)? You’re°dONLNdÿ‰d(6going to nuke my °dONLNdÿd‰ô)L global data°dONLNd*ÿô‰m)52 reference?!” Well, not exactly — it’s just not as°dONLNd]‰v( 6Pimmediately accessible as you would like it to be. Don’t worry, it’s possible to°dONLNdÆ¸á* Sdetect when your component is in this situation and retrieve the refCon from it, as°dONLNd¸¡* &long as you follow a few simple steps.°dONLNd* é*SThe situation in question arises when there’s not enough room in the system heap to°dONLNd~ ,ä* Popen a registered component. This happens when you run an application (that uses°dONLNdœ,8Å* Qyour component) in a partition space so large that all free memory is reserved by°dONLNd!8Dç* Pthe application. This will prevent the system heap from being able to grow. When°dONLNdrDPã* Othe application calls OpenComponent, the component may be unable to open in the°dONLNd¬P\o* Ksystem heap because there’s no available space. In this case, the Component°dONLNd\hX*
  14522. Manager will °dONLNd\Xho)@clone°dONLNd \ohå)> the component. When a component is cloned, a new registration°dONLNd_htê(ê6Tof the component is created in the caller’s heap, and the component ID of the cloned°dONLNd¥tÄ∏* %component is returned to the caller, °dONLNdŸt∏ÄΔ)†not°dONLNd‹tΔÄ[)! the component ID of the original°dONLNd˛Äå|(®6Pregistration. The clone is very nearly a perfect copy, but like the Dopplegänger°dONLNdOåòu* Captain Kirk in the °dONLNdcåuò†)]    Star Trek°dONLNdlå†òv)+. episode “What Are Little Girls Made Of?” it’s°dONLNdõò§è(¿6missing something crucial.°dONLNd∑∞ºç*SThat something is the component refCon. The refCon isn’t preserved in the clone, so°dONLNd     º»Ñ* Qif your component needs the refCon to perform properly, it must be recovered from°dONLNd    ]»‘ë* Sthe original component. How you go about doing this is a bit tricky. We assume that°dONLNd    ±‘‡ê* Ryou followed our advice and made sure that your component registered itself with a°dONLNd
  14523. ‡Ïß*  unique name. (This technique is °dONLNd
  14524. $‡ßϵ)ènot°dONLNd
  14525. '‡µÏj)( guaranteed to work properly unless this°dONLNd
  14526. Pϯı(62constraint is satisfied — you’ll see why shortly.)°dONLNd
  14527. Éy*MThe first problem is detecting whether your component has been cloned at open°dONLNd
  14528. —|* Mtime. You can determine this by examining your component’s A5 world using the°dONLNd (Ç* OGetComponentInstanceA5 routine. If the A5 world is nonzero, you’ve been cloned.°dONLNd o(4x* MBut wait, you say, what if I registered my component locally? Won’t it have a°dONLNd Ω4@A* valid A5 x4x&,Times
  14529. ({) 
  14530. +
  14531. 29
  14532. 4ìÚ·Ø
  14533. (Ú*1TECHNIQUES FOR WRITING AND DEBUGGING COMPONENTS  
  14534. )”
  14535. December 1992ˇ¿◊#ˇ ˇˇˇˇ#◊ 
  14536. d, Palatino
  14537. .°dONLNdñ$+¥@Tvalue? Yep, it sure will, but if it was registered locally, we won’t have this nasty°dONLNdU$ñ0* Psituation to begin with, since the component won’t be in the system heap anyway.°dONLNdß<ñH*ONow you know that you’ve been cloned, and that you can’t depend on your refCon.°dONLNd˜HñT* RHow do you retrieve it? Well, we know that there are two registrations of the same°dONLNdJTñ` * Rcomponent in the Component Manager registration list (the original and the clone).°dONLNdù`ñl* USo all we have to do is to set up a component description for our component, and then°dONLNdÛlñx* Nuse FindNextComponent to iterate through